OpenCV之感兴趣区域ROI(C++实现)

感兴趣区域(ROI,region of interest),就是从图像中选择的一个图像区域,这个区域是图像分许所关注的重点,通过圈定这个区域,一边进一步的处理,而且使用ROI指定想读入的目标,可以减少处理时间,增加精度。

定义ROI由两种方法,第一种是使用表示矩形区域的Rect,它指定矩形的左上角坐标矩形的长宽来定义矩形区域:

Mat image;

imageROI = image(Rect(500, 250, logo,cols, logo,rows));

另一种方法是指定感兴趣区域行或列的范围(Range),Range是指从其实索引到终止索引(不包括终止索引):


imageROI = image(Range(250, 250+logo.rows),range(500, 500+logo.cols));

具体的代码示例如下:

int main() {
    Mat srcImage = imread("/Users/dwz/Desktop/cpp/dota_pa.jpg");      // 读取大图
    Mat logoImage = imread("/Users/dwz/Desktop/cpp/dota_logo.jpg");   // 读取小图

//    定义Mat类型,并为其设定ROI区域
    Mat imageROI = srcImage(Rect(100, 150, logoImage.cols, logoImage.rows));
    Mat mask;
//    获取掩膜
    cvtColor(logoImage, mask, COLOR_BGR2GRAY);
//    将掩膜复制到ROI
    logoImage.copyTo(imageROI, mask);
    imwrite("ROI.jpg", srcImage);
    return 0;
}

主要包括以下几个步骤:

  • 首先读入两张图像,
  • 然后定义Mat类型的imageROI,并使用Rect设置感兴趣区域,
  • 接着定义Mat类型的mask,
  • 使用copyTo把mask的内容复制到imageROI中,就得到了最终的效果图。

结果:

OpenCV之感兴趣区域ROI(C++实现)_第1张图片

 

你可能感兴趣的:(C++,opencv,图像处理,opencv,计算机视觉,c++)