在OpenCV中我们能够非常方便地获取指定ROI区域的子图像。如果你对图像设置了ROI,那么,Opencv的大多数函数只在该ROI区域内运算(只处理该ROI区域),如果没设ROI的话,就会出来整幅图像。
ROI非常有用,例如我们想把图像中的人脸扣出来,进行人脸识别。需要注意的时候,ROI一定在图像内部,而不能超出图像的范围。

对图像设定ROI的函数是:

cvSetImageROI(IplImage* src,CvRect rect);
src表示的是源图像,rect只的是ROI区域。

如果要取消ROI区域,那么使用函数:

cvResetImageROI(IplImage* src);
这个函数,就把src上的ROI区域取消掉。

图像的剪切有多种措施,其中利用ROI的措施

第一步:将必需剪切的图像图像不局部设置为ROI

cvSetImageROI(src , cvRect(x,y,width,height));

第二步:修建一个与必需剪切的图像局部同样大小的新图像

cvCreateImage(cvSize(width,height),IPL_DEPTH,nchannels);

第三步:将源图像复制到修建的图像中

cvCopy(src,dst,0);

第四步:释放ROI区域

cvResetIamgeROI(src);

缩放可用cvResize();

下面是对mat进行roi操作

#include <iostream>

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace std;
using namespace cv;

void main()
{
Mat Image,Gray_Image,ROI1,ROI2;
Mat RowClone;
int channels,rows,columns;
Image=imread("E:\\ali.jpg",1);
channels=Image.channels(); //获取通道、行、列
rows=Image.rows;
columns=Image.cols;    
cout<<"channels="<<channels<<endl;
cout<<"Rows="<<rows;
cout<<"colmns="<<columns;
cvtColor(Image,Gray_Image,CV_BGR2GRAY); //转灰度图
RowClone=Gray_Image.row(1).clone();  //复制一个图像的部分
ROI1=Gray_Image(Range(10,100),Range(10,100)); //通过行列来获取目标区域
ROI2=Gray_Image(Range::all(),Range(1,100));

namedWindow("ROI1",CV_WINDOW_AUTOSIZE);
imshow("ROI1",ROI1);
namedWindow("ROI2",CV_WINDOW_AUTOSIZE);
imshow("ROI2",ROI2);
namedWindow("RowClone",CV_WINDOW_AUTOSIZE);
imshow("RowClone",RowClone);
namedWindow("ali",CV_WINDOW_AUTOSIZE);
        imshow("ali",Image);
waitKey(0);
return;
}

opencv的ROI操作相关推荐

  1. opencv 手选roi区域_【OpenCV】选择ROI区域

    问题描述:在测试目标跟踪算法时,需要选择不同区域作为目标,进行目标跟踪,测试目标跟踪的效果. 解决思路: 1.OpenCV中提供了鼠标交互控制,利用setMouseCallback()给固定的窗口设置 ...

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

    文章目录 一.图像ROI 1. 概念 2. 图像ROI操作 2.1 矩形感兴趣区域 2.1.1 使用Rect函数 2.1.2 使用Range 2.1.3 应用实例 2.2 不规则ROI区域 2.2.1 ...

  3. OpenCV中视频操作及人脸识别案例

    目录 OpenCV中视频操作及人脸识别案例 视频操作 视频读写 从文件中读取视频并播放 保存视频 小结 视频追踪 meanshift Camshift 算法总结 小结 案例:人脸案例 人脸识别基础 实 ...

  4. Opencv-图像ROI与ROI操作

    图像ROI与ROI操作 知识点 python代码 c++代码 知识点 图像ROI与ROI操作 图像ROI解释: 图像的ROI(region of interest)是指图像中感兴趣区域.在OpenCV ...

  5. [opencv]常用阵列操作函数总结

    /*=========================================================================*/ // 阵列操作 /*============ ...

  6. 使用Python,OpenCV进行形态学操作

    使用Python,OpenCV进行形态学操作) 1. 效果图 2. 原理 3. 源码 3.1 [制作logo源码](https://blog.csdn.net/qq_40985985/article/ ...

  7. OpenCV通过形态学操作提取水平线和垂直线

    OpenCV通过形态学操作提取水平线和垂直线 通过形态学操作提取水平线和垂直线 目标 理论 形态学运算 结构元素 代码 说明/结果 载入图片 灰阶 灰度到二进制图像 输出图像 结构要素 优化边缘/结果 ...

  8. OpenCV基本线条操作

    OpenCV基本线条操作 1.基本操作和使用的函数 Open CV 提供了基本 线条操作 ,即画线.画矩 .画圆等. 此处仅以画圆做展示可参考对应 API cv2.cv2.line(). cv2 .c ...

  9. OpenCV的Masking操作

    OpenCV的Masking操作 1.介绍 Masking操作使用mask(起遮罩效果)可以让我 只关注图像的某区域,可以称作为感兴趣区域,例如人脸识别系统人脸 就是一般不关注图片中其他非人脸部分.此 ...

最新文章

  1. LYDSY模拟赛day2 Divisors
  2. CentOS7 下DNS的搭建
  3. testing your idea
  4. mysql动态sql是什么,mysql中动态sql的一次实际应用
  5. Select2的使用 联动筛选框的一个例子
  6. 二次优化问题dfp_MATLAB优化问题应用实例讲解
  7. 解决SQLite异常:library routine called out of sequence
  8. Protostuff序列化和反序列化
  9. PyTorch 和 TensorFlow 引领未来
  10. IPv4和IPv6比特转发率和包转发率的关系
  11. 对接阿里云天气,获取天气预报数据
  12. 【行空板教程】手写输入法
  13. 数学分析教程(科大)——1.3笔记+习题
  14. 百科知识 epub文件如何打开
  15. android qq 退出帐号,大家手机上的QQ平常用完退不退出帐号
  16. [SV]SystemVerilog Structured Procedures --- always_comb、always_ff、always_latch
  17. 咪咕音乐的下载音乐存储路径(MAC)
  18. VSCode下载与安装使用教程【超详细讲解】
  19. oracle rac节点重启的原因,由重启引起的Oracle RAC节点宕机分析及追根溯源
  20. Go常见错误第14篇:过度使用getter和setter方法

热门文章

  1. go文件服务器mimetype,网络:什么是 MIME TYPE?
  2. php 换台电脑 表单部分_PHP更新购物车数量(表单部分/PHP处理部分)
  3. c语言数位递增的数解题思路,【菜鸟求助】21位数的花朵数问题,求解题思路
  4. SSL/TLS协议信息泄露漏洞(CVE-2016-2183)【原理扫描】远程桌面 3389 Windows 2016
  5. 服务器的文件共享,服务器文件共享设置
  6. oracle asm dd命令,使用dd命令复制ASM磁盘的spfile
  7. js和css和img,Node.js压缩web项目中的js,css和图片
  8. 盘神 Pandownload 复活
  9. 因“薪水太高”被欠薪3个月、后又遭解雇?程序员愤怒反击!
  10. 20万Star的编程学习教程:让你的编码之路事半功倍!