2012-07-18 9 views
6

を隠す私はこのマスクを持っている:は、OpenCVのbitwise_and +

mask

だが、私はこの作品白を埋めるために別の画像でbitwise_andをしたいと思いましょう:今すぐ

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

、得られる画像は次のようになります。

Image + Mask

これはうまくやわらかいですが、結果から黒を差し引きたいと思います。私はbitwise_andも8ビットのシングルチャンネル画像を受け入れているのを見ましたが、私はそれが何をしているのか正確には分かりません。私はそれが0であればそれはそれがそうでなければそれを無視することを渡すことを仮定する。

どのように私は同じマスクを使用して8ビットイメージとして変換し、それを使用して結果の黒を削除しますか?私は同じイメージが欲しいですが、本質的に黒い境界がありません。

答えて

7

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

は基本的にあなたがしなければならないすべては以下の通りです:

image.copyTo(dst, mask); 

これは、DSTに画像をコピーしても、それを「画像」と同じ特性を与えるためにマットの詳細を処理します。マスクを8ビットのシングルチャンネル画像にする必要があります。この方法では、メソッドを呼び出すと、マスクを渡すピクセルだけがdstにコピーされます。

ここではより多くの情報のdocリンクの:copyTo

0

はちょうどあなたがの黒い部分を翻訳することができます「AND」方法

かを、使用した後fox_image

よりも大きな新しいキャンバスを作成します最初の画像を白にする:0 --- 255

問題が解決されます。