主なアイデアは、ユーザーが特定の壁ベースのユーザー選択に合わせて色を変更できるようにすることです。現在、私はこの機能をcvFloodFill
(マスク画像の準備に役立ちます)を使用して実装しました。これHSV
は、壁の相対値を変更してエッジを保持できるようにするのに役立ちます。ただし、このソリューションの問題は、色で機能し、ユーザーが選択した単一の壁ではなく、すべての壁が再塗装されることです。
私もキャニーエッジ検出を試みましたが、エッジを検出することはできますが、それを面積に変換することはできません。
私が現在再描画機能に使用している以下のコードを見つけてください
マスクを準備する
cvFloodFill(mask, new CvPoint(295, 75), new CvScalar(255, 255, 255,0), cvScalarAll(1), cvScalarAll(1), null, 4, null);
分割チャンネル
cvSplit(hsvImage, hChannel, sChannel, vChannel, null);
色を変える
cvAddS(vChannel, new CvScalar(255*(0.76-0.40),0,0,0), vChannel, mask);
画像からエッジと対応する領域をどのように検出できますか。
私はそれ以外の解決策を探していますがopencv
、iPhoneとAndroidで可能でなければなりません
編集
以下の手順を使用して、以下の画像のようにいくらかの結果を得ることができます
cvCvtColor(image, gray, CV_BGR2GRAY);
cvSmooth(gray,smooth,CV_GAUSSIAN,7,7,0,0);
cvCanny(smooth, canny, 10, 250, 5);
この出力には 2 つの問題があります。解決方法がわからない 1. エッジの近くを閉じる 2. 小さなエッジを削除する