8

画像のマスクを作成するのに役立つopenCVの関数を探しています。

たとえば、MATLAB では次のようになります。

B(A<1)=0;

また

B=ゼロ(サイズ(A));

B(A==10)=c;

4

2 に答える 2

10

mask一部の関数では、引数を渡すことができます。あなたが説明した方法でマスクを作成するには、比較演算子であるCmp または CmpSを使用していると思います。これにより、別の配列またはスカラーと比較してマスクを作成できます。例えば:

im = cv.LoadImageM('tree.jpg', cv.CV_LOAD_IMAGE_GRAYSCALE)
mask_im = cv.CreateImage((im.width, im.height), cv.IPL_DEPTH_8U, 1)
#Here we create a mask by using `greater than 100` as our comparison
cv.CmpS(im, 100, mask_im, cv.CV_CMP_GT)
#We set all values in im to 255, apart from those masked, cv.Set can take a mask arg.
cv.Set(im, 255, mask=mask_im)
cv.ShowImage("masked", im)
cv.WaitKey(0)

オリジナルim:

ここに画像の説明を入力

im処理後:

ここに画像の説明を入力

于 2012-05-15T10:11:40.967 に答える
3

OpenCV C++ は、マスクの作成に便利な次の構文をサポートしています。

Mat B= A > 1;//B(A<1)=0

また

Mat B = A==10;
B *= c;

これは次と同等である必要があります。

B=zeros(size(A));
B(A==10)=c;

も使用できますcompare()。次の OpenCVドキュメントを参照してください。

于 2014-04-06T20:51:26.193 に答える