OpenCV函数类似于matlab的“查找”

时间:2012-05-15 08:44:15

标签: matlab opencv

我正在寻找openCV中的一个函数来帮助我制作图像掩码。

例如在MATLAB中:

B(A< 1)= 0;

B =零(尺寸(A));

B(A == 10)= C;

2 个答案:

答案 0 :(得分:10)

某些函数允许您将mask个参数传递给它们。要按照你描述的方式创建蒙版,我认为你是Cmp or 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

enter image description here

处理后

im

enter image description here

答案 1 :(得分: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 Documentation