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

use*_*079 2 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;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Ras*_*sim 6

只需创建新图像,即引用相同的数据.

cv::Rect const mask(x1, y1, x2, y2);
cv::Mat roi = image(mask);
Run Code Online (Sandbox Code Playgroud)

现在你可以做roi处理了.roi上的所有更改也会适用于图像.