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 回答