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

时间:2013-04-05 19:58:24

标签: c++ opencv computer-vision

有一个图像以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;
            }
        }
    }

enter image description here

1 个答案:

答案 0 :(得分:6)

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

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

现在您可以进行 roi 处理。 roi上的所有更改也会适用于图像。