OpenCV--0016:图像ROI与ROI操作

article/2025/9/22 6:58:07

文章目录

  • 一、图像ROI
    • 1. 概念
    • 2. 图像ROI操作
      • 2.1 矩形感兴趣区域
        • 2.1.1 使用Rect函数
        • 2.1.2 使用Range
        • 2.1.3 应用实例
      • 2.2 不规则ROI区域
        • 2.2.1 通过inRange函数生成mask
        • 2.2.2 通过“与”操作提取ROI

一、图像ROI

1. 概念

图像ROI(region of interest)是指图像中感兴趣的区域。

在OpenCV中设置图像ROI区域,只对图像感兴趣的区域操作。


2. 图像ROI操作

2.1 矩形感兴趣区域

使用构造函数从图像中提取感兴趣的区域有两种方法:

2.1.1 使用Rect函数

  • 声明
    cv::Rect 表示一个矩形区域,常用的构造函数如下:
    Rect_(_Tp _x,      //左上角的坐标值x_Tp _y,      //左上角的坐标值y_Tp _width,  //所选区域的宽_Tp _height  //所选区域的高
    );
    
  • 实例
    //创建宽度为320,高度240的3通道图像img
    Mat img(Size(320,240),CV_8UC3);
    //提取img中Rect(10,10,100,100)感兴趣区域,宽和高都是100
    Mat roi(img,Rect(10,10,100,100));
    

2.1.2 使用Range

  • 声明
    cv::Range是指感兴趣区域的行和列的范围
    cv::Range(Range(row1,row10),    //起始索引Range(cols1,cols10)   //终止索引) 
    是指从起始索引到终止索引(不包括终止索引)的一段连续的序列。
    
  • 实例
    Mat roi(img,Range(10,100),Range(10,100));
    

2.1.3 应用实例

Mat img;
img=imread("D:/test/img.jpg");
if (img.empty()){cout << "读取文件错误" << endl;
}
imshow("img", img);int height = img.rows;
int width = img.cols;
cout << "img: 长×宽: " << height << "×" << width << endl;Rect rect(Point(190, 20),Point( 440, 350));
Mat roi = img(rect);
imshow("roi", roi);//更改roi会影响到原图,因为roi和原图指向同一块内存区域。
roi.setTo(Scalar(255, 255, 255));
imshow("img-1", img);//更改img2不会影响到原图,因为clone后的图像和原图不指向同一片内存区域。
Mat img2 = roi.clone();
img2.setTo(Scalar(0, 0, 0));
imshow("img-2", img);
imshow("img2", img2);waitKey(0);

在这里插入图片描述
在这里插入图片描述

2.2 不规则ROI区域

2.2.1 通过inRange函数生成mask

该函数输出的dst是一幅二值化之后的图像。

通俗的来讲,inRange函数就是判断src中每一个像素是否在[lowerb,upperb]之间,注意集合的开闭。如果结果为是,那么在dst相应像素位置填上255,反之则是0。一般我们把dst当作一个mask来用,如下例所示:

针对单通道图像

dst(I) = lowerb(I)0 ≤ src(I)0<upperb(I)0
即,如果一幅灰度图像的某个像素的灰度值在指定的高、低阈值范围之内,则在dst图像中令该像素值为255,否则令其为0,这样就生成了一幅二值化的输出图像。


针对三通道图像
dst(I) = (lowerb(I)0 ≤ src(I)0 < upperb(I)0 )∧ (lowerb(I)1 ≤ src(I)1 < upperb(I)1) ∧(lowerb(I)2 ≤ src(I)2 < upperb(I)2)
即,每个通道的像素值都必须在规定的阈值范围内!

2.2.2 通过“与”操作提取ROI

白色的地方,按位&后会保留另外一张图片的颜色;
黑色地方还是继续为黑色。


白色的地方,继续为白色;
黑色的地方,为另一张图片的内容。

Mat img = imread("D:/test/green.jpg");imshow("img", img);Mat hsv, mask;cvtColor(img, hsv, COLOR_BGR2HSV);//在hsv范围内的像素变成白色,不在范围内的图像像素值变成黑色。//提取感兴趣的hsv区域inRange(hsv, Scalar(35,43,46), Scalar(99,255,255), mask);imshow("mask", mask);Mat rabbit,rabbit_not;//逻辑取反操作,白色和黑色区域互换。//白色(255,255,255)>0    黑色(0,0,0)=0bitwise_not(mask, rabbit_not);imshow("rabbit_mask_not", rabbit_not);//逻辑与操作。//都大于0则像素值打开,否则像素值bitwise_and(img, img, rabbit, rabbit_not);imshow("rabbit", rabbit);//更换背景Mat bg = Mat::zeros(img.size(),img.type());bg.setTo(Scalar(240, 145, 146));imshow("bg", bg);//给兔子换背景Mat dst;bitwise_or(rabbit,bg,dst,mask);imshow("dst", dst);add(dst, rabbit, dst);imshow("dst1", dst);

在这里插入图片描述
bitwise_or(rabbit,bg,dst4,mask)可以分解成两步:

  1. bitwise_or(rabbit,bg,dst2)—>dst2
    在这里插入图片描述
  2. bitwise_or(dst2,dst2,dst4,mask)—>dst4
    在这里插入图片描述

学习:
Opencv-图像ROI与ROI操作
设置图片ROI(OpenCV学习笔记之二)


http://chatgpt.dhexx.cn/article/fhZ7IT3M.shtml

相关文章

ROI pooling 和 ROI Align详解

ROI Align 是在Mask-RCNN这篇论文里提出的一种区域特征聚集方式, 很好地解决了ROI Pooling操作中两次量化造成的区域不匹配(mis-alignment)的问题。实验显示&#xff0c;在检测测任务中将 ROI Pooling 替换为 ROI Align 可以提升检测模型的准确性。 ROI Pooling 的局限性分析 …

【深度学习】ROI Pooling 和 ROI Align 计算机视觉 目标检测

文章目录 ROI Pooling和ROI Align&#xff1a;一篇好的文章ROI Pooling 如何计算&#xff1f;AdaptiveMaxPool2d 在做啥Fast RCNN或者Faster RCNN中都使用了ROI PoolingROI Align ROI Pooling和ROI Align&#xff1a; &#xff08;1&#xff09;ROI Pooling 是为了让特征图输出…

ROI Pooling

RCNN ref 1 步骤: 1.使用Selective Search方法生成候选区域 2.对每一个候选区域使用CNN进行特征提取 3.对提取到的特征送入到每一类的SVM分类器 判断该区域是否属于该类特征 4.使用回归器精修候选框的位置 候选框搜索阶段: 使用selective search方法生成候选框,由于CNN提取…

ROI 详解

SPPNet、roi pooling 和 average pooling之间的区别&#xff0c;都是起到对任意大小的输入产生固定的输出的作用。其中SPPNet、roi pooling是一样的。 下面对ROI Pooling 进行详解&#xff1a; ROI是Region of Interest的简写&#xff0c;指的是在“特征图上的框”&#xff1…

【深度学习小知识】ROI到ROI pooling 再到ROI Align

ROI&#xff01;RoI Pooling&#xff01; ROI详解RoI Pooling详解Pooling操作ROI pooling ROI Align详解 ROI详解 Region of interest(ROI),中文译为感兴趣区域。在计算机视觉领域&#xff0c;从输入的图像中框选处理待处理的区域就是ROI。 ROI / Region proposals大致过程&am…

MD5密钥

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

漫画戏说:如何破解MD5加密算法

本文将通过漫画的形式来解释&#xff1a;如何破解MD5加密算法。其中包括了暴力枚举法、字典法、彩虹表法三种破解MD5加密算法的方法。MD5破解原理都是利用了&#xff0c;被加密的数据与MD5加密算法所生成的哈希值并不是一一对应的关系&#xff0c;而是多对一&#xff0c;也就是…

基于量子计算的md5密码哈希破解方法

基于量子计算的md5密码哈希破解方法 背景 Md5密文破解&#xff08;解密&#xff09;可以说是网络攻击中的一个必不可少的环节&#xff0c;是黑客工具中的一个重要“辅助工具”。md5解密主要用于网络攻击&#xff0c;在对网站等进行入侵过程&#xff0c;有可能获得管理员或者其…

MD5与SHA

不管是MD5还是SHA&#xff0c;这一切的根本都是哈希算法&#xff0c;即单向函数 MD5 全称为 消息摘要算法版本5 &#xff08;Message Digest Algorithm 5&#xff09; 首先我要强调的是&#xff0c;MD5并不是加密算法&#xff0c;它是一种哈希散列算法。 但是其往往可以应用…

使用rainbowcrack破解md5密文

文章目录 1、rainbowcrack下载2、文件说明3、使用流程3.1 生成彩虹表3.2 排序彩虹表3.3 使用刚生成的彩虹表破解密文 4、实例4.1 生成彩虹表4.2 彩虹表排序4.3 破解密文 1、rainbowcrack下载 下载链接 2、文件说明 3、使用流程 环境&#xff1a;windows 前提&#xff1a;进入…

MD5算法破解思路

https://blog.csdn.net/wufaliang003/article/details/79794982 小明&#xff1a;老师&#xff0c;上次您讲了MD5算法。用它生成的信息摘要&#xff0c;真的可以被破解吗&#xff1f; 老师&#xff1a;有很多种方法可以破解&#xff0c;不过需要明确一点&#xff0c;这里所谓的…

MD5密文破解实验

实验目的与要求 1、 了解MD5加密的基本原理 2、 使用MD5Crack工具进行MD5解密 3、 使用网络资源对密文进行在线破解 4、 认真阅读并掌握本实验相关的知识点 5、上机实现实验所提到的工具和操作&#xff0c;得到实验结果&#xff0c;并填写实验报告 预备知识 MD5介绍 199…

破解MD5加密

本文摘自漫画戏说&#xff1a;如何破解MD5加密算法TOMORROW星辰 前言 这里所谓的破解并非是要把摘要还原成原文。因为MD5算法是用有穷的128位表示无穷的原文。对于MD5的破解&#xff0c;实际上都属于碰撞&#xff0c;比如原文A可以 通过MD5生成摘要M&#xff0c;我们只要找到…

MD5摘要算法的几种破解方法!

你知道的越多&#xff0c;不知道的就越多&#xff0c;业余的像一棵小草&#xff01; 你来&#xff0c;我们一起精进&#xff01;你不来&#xff0c;我和你的竞争对手一起精进&#xff01; 编辑&#xff1a;业余草 推荐&#xff1a;https://www.xttblog.com/?p5259 MD5 算法暴力…

比起高性能计算,高端存储才更亟待国产化

科技云报道原创。 上周末&#xff0c;2019全国高性能计算学术年会在内蒙古开幕&#xff0c;对于行业内的人来说&#xff0c;这是一个每年不能再熟悉的代表高性能领域的峰会了&#xff0c;CCF如今已经成为世界三大高性能计算学术年会之一。 ​ 值得注意的是&#xff0c;2019年的…

评测|HPE Nimble AF全闪存系列,诠释真正的高端存储

【IT168 评测】导语&#xff1a;随着AI、互联网、大数据等技术快速发展&#xff0c;企业对存储设备的需求已踏上一个更高的级别&#xff0c;高性能、低延时、大容量等多种需求的应用场景愈发常见&#xff0c;在这种情况下&#xff0c;寻求能够满足相应工作负载能力的存储设备已…

高端存储下一个爆款凭什么是它?

高端存储是企业级存储领域最令人淡定的市场&#xff0c;淡定在于这个市场门槛高&#xff0c;真正赢得了用户认可之后&#xff0c;基本上都可以淡定地稳步发展&#xff0c;但是想要取得绝对的优势&#xff0c;那还是需要下一番功夫不可。只是功夫非一日练成&#xff0c;更需耐力…

再获最佳推荐,华为高端存储凭什么征服DCIG?

近日&#xff0c;全球著名技术分析机构DCIG发布《DCIG 2023-24高端存储阵列TOP5》报告&#xff0c;华为OceanStor Dorado 18000凭借可靠性、易用性和安全性等诸多优势&#xff0c;在DELL EMC、IBM、HPE、PureStorage等一众国际厂商中脱颖而出&#xff0c;荣获最佳推荐榜首。 一…

【业界新闻】浪潮高端存储系统技术发展及展望(上篇)

转自&#xff1a;http://news.watchstor.com/corp-147547.htm [导读]从“9.11事件”之后大量的企业因为数据丢失而宣告破产可以看出数据的重要地位。随着计算机技术的发展&#xff0c;实现了数据计算和数据存储的分离&#xff0c;而数据存储由存储系统完成。存储系统的出现&…

HDS不玩了,高端存储还能玩多久?

据悉&#xff0c;“日立公司高级管理系统与服务业务副总裁Keiichi Shiotsuka的表述。他指出&#xff0c;日立公司正"着手冻结存储业务之内高端机型的投资&#xff0c;且在对低营收硬件开发业务进行结构化调整&#xff0c;旨在于2019年3月31日之前将系统与服务业务运营利润…