2

有一张以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;
            }
        }
    }

在此处输入图像描述

4

1 回答 1

6

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

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

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

于 2013-04-06T17:00:33.240 回答