遮罩图像

结果图像

期望的图像

有没有使用opencv绘制带有蒙版图像的矩形的功能?我已经附上了预期的图像。请帮帮我。提前谢谢。
发布于 2015-04-09 17:12:02
我认为你问的问题不是很清楚,但是如果第一个图像是你的原始图像(圆圈),第二个图像(矩形)是你的二进制掩模图像,并且你想在原始图像上应用该掩模,那么你可以按如下方式应用掩模:
inputMat.copyTo(outputMat, maskMat);源:https://stackoverflow.com/a/18161322/4767895
如果您还没有创建一个二进制蒙版,可以这样做:创建一个与原始图像大小相同的蒙版(设置为全零),并在其中绘制一个具有特定大小的填充矩形(设置为全一)。
cv::Mat mask = cv::Mat::zeros(Rows, Cols, CV_8U); // all 0
mask(Rect(StartX,StartY,Width,Height)) = 1; //make rectangle 1源:https://stackoverflow.com/a/18136171/4767895
如果我误解了你的问题,请随时回复。
发布于 2015-03-17 20:13:51
尝试使用Opencv中提供的布尔运算
请参考此代码(source)。我已经添加了所有的按位操作,以防你需要。
int main( )
{
Mat drawing1 = Mat::zeros( Size(400,200), CV_8UC1 );
Mat drawing2 = Mat::zeros( Size(400,200), CV_8UC1 );
drawing1(Range(0,drawing1.rows),Range(0,drawing1.cols/2))=255; imshow("drawing1",drawing1);
drawing2(Range(100,150),Range(150,350))=255; imshow("drawing2",drawing2);
Mat res;
bitwise_and(drawing1,drawing2,res); imshow("AND",res);
bitwise_or(drawing1,drawing2,res); imshow("OR",res);
bitwise_xor(drawing1,drawing2,res); imshow("XOR",res);
bitwise_not(drawing1,res); imshow("NOT",res);
waitKey(0);
return(0);
}https://stackoverflow.com/questions/29098207
复制相似问题