画像(IplImage 8ビット)とバイナリマスク(これも同じサイズの8ビットIplImageであり、すべてのピクセルの値が0または255の場合)がある場合、どのようにしてすべてのピクセルを作成できますか?値がゼロのマスク内のピクセルに対応する画像の値はゼロであり、他の値(つまり255)のマスク内のピクセルに対応する画像内のすべてのピクセルの値は元の画像と同じです。画像?
つまり、「マスク領域内」にあるものはすべて元の値を保持し、マスク領域外にあるものはすべてゼロになります。
最も簡単な方法は、「Mat img」(マスクされる画像、入力)と「Matmasked」(マスクされた画像、出力)を使用する場合です。
img.copyTo(masked, mask)
ここで、「マットマスク」は必ずしもバイナリではない行列です(copyToはゼロ値の要素を考慮します)。マスクは、任意のサイズとタイプにすることができます。必要に応じて再割り当てされます。
ドキュメントを参照してください。
あなたは単にbitwise_and()
関数を使うことができます。
乗算またはビット-そしてマスクと画像。そのためのOpenCV関数がいくつかありますが、Cインターフェイスの名前はわかりません。
C ++の場合:
Mat image, mask;
image = image * mask;
// or
image = image & mask;