首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在opencv中绘制带有蒙版图像的矩形?

如何在opencv中绘制带有蒙版图像的矩形?
EN

Stack Overflow用户
提问于 2015-03-17 19:43:50
回答 2查看 3.9K关注 0票数 0

遮罩图像

结果图像

期望的图像

有没有使用opencv绘制带有蒙版图像的矩形的功能?我已经附上了预期的图像。请帮帮我。提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2015-04-09 17:12:02

我认为你问的问题不是很清楚,但是如果第一个图像是你的原始图像(圆圈),第二个图像(矩形)是你的二进制掩模图像,并且你想在原始图像上应用该掩模,那么你可以按如下方式应用掩模:

代码语言:javascript
复制
inputMat.copyTo(outputMat, maskMat);

源:https://stackoverflow.com/a/18161322/4767895

如果您还没有创建一个二进制蒙版,可以这样做:创建一个与原始图像大小相同的蒙版(设置为全零),并在其中绘制一个具有特定大小的填充矩形(设置为全一)。

代码语言:javascript
复制
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

如果我误解了你的问题,请随时回复。

票数 1
EN

Stack Overflow用户

发布于 2015-03-17 20:13:51

尝试使用Opencv中提供的布尔运算

请参考此代码(source)。我已经添加了所有的按位操作,以防你需要。

代码语言:javascript
复制
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);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29098207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档