使用 OpenCV 在图像上创建矩形区域蒙版

Posted

技术标签:

【中文标题】使用 OpenCV 在图像上创建矩形区域蒙版【英文标题】:Create a rectangle region mask on image with OpenCV 【发布时间】:2013-04-05 19:58:24 【问题描述】:

有一张以cv::Mat 格式读取的图像,我只想在图像中心保留一个矩形区域以进行检测。我尝试了cvCopy 方法,但它要求图像格式为cvArr,有没有人知道如何实现仍然使用Mat 格式?


有我创建蒙版的代码和屏幕截图,蒙版的大小与原始帧不匹配似乎很奇怪。请问这里有什么建议吗?

    *cap >> frame1;
    Rect roi(100,100,100,100);
    for(int i =0; i<frame1.rows; i++)
    
        for(int j=0; j<frame1.cols;j++)
        
            if(!roi.contains(Point(i,j)))
            
                frame1.at<uchar>(i,j) = 0;
            
        
    

【问题讨论】:

【参考方案1】:

只需创建引用相同数据的新图像。

cv::Rect const mask(x1, y1, x2, y2);
cv::Mat roi = image(mask);

现在您可以进行 roi 处理了。对 roi 的所有更改也将应用于图像。

【讨论】:

我正在尝试制作 Eclipse 的面具,但是当我制作它的对象时,这个函数显示错误,就像 ellipse const mask(img,Point(20,40), Size(60,40),0,0,360, Scalar(0,0,0)); 嗨,艾哈迈德。抱歉,这些信息不足以帮助您。请创建一个新问题并提供更多详细信息。

以上是关于使用 OpenCV 在图像上创建矩形区域蒙版的主要内容,如果未能解决你的问题,请参考以下文章

使用 OpenCV 进行天空分析的图像 [关闭]

如何在 PHP 中检测图像上的蒙版区域?

多区域掩码 OpenCV

OpenGL:在背景图像上使用蒙版绘制颜色

通过 openCV 创建矩形蒙版的更好方法

OpenCV:创建一个透明蒙版?