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

69 篇文章 14 订阅
53 篇文章 15 订阅

感兴趣区域(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中,就得到了最终的效果图。

结果:

 

  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值