6

私はこのマスクを持っています:

マスク

これが機能する白を塗りつぶすために、bitwise_andを別の画像で作成したいとします。

cv::bitwise_and(srcImage, mask, dstImage, [mask???]);

さて、結果の画像は次のようなものになります:

画像+マスク

これは問題なくダンディですが、結果から黒を差し引きたいと思います。bitwise_andも8ビットのシングルチャネルイメージを受け入れることを確認しましたが、それが何をするのか正確にはわかりません。0の場合は通過させ、それ以外の場合は無視すると思います。

では、同じマスクを使用して8ビット画像として変換し、それを使用して結果の黒を削除するにはどうすればよいでしょうか。同じ画像が欲しいのですが、基本的に黒い境界線はありません。

4

2 に答える 2

8

解決策は非常に簡単です。私は openCV ライブラリについてあまり知らなかったので、タスクに適切な関数を使用していませんでした。ただし、マスクを bitwise_and メソッドに渡すときにアプリケーションがクラッシュした理由はまだわかりません。

基本的に、あなたがしなければならないのは次のことだけです:

image.copyTo(dst, mask);

これにより、画像が dst にコピーされ、マットの詳細も処理されて、「画像」と同じプロパティが与えられます。マスクが 8 ビットの単一チャネル イメージであることを確認する必要があります。このようにメソッドを呼び出すと、マスクを通過したピクセルのみが dst にコピーされます。

詳細については、次のドキュメントリンクを参照してください。

于 2012-07-26T13:18:04.327 に答える
0

fox_image よりも大きな新しいキャンバスを作成するだけです

次に、「AND」メソッドを使用します

または、最初の画像の黒い部分を白に変換できます: 0 ---255

その後、問題は解決されます。

于 2017-08-06T13:22:05.590 に答える