OPENCV C++接口的复制roi数据。
来源:互联网 发布:开淘宝店铺经验 编辑:程序博客网 时间:2024/06/04 17:54
pencv的图像及子图像复制1.x版本与2.x版本的使用方式有很大不同。
1.x版本采用cvCopy或cvSetImageROI, cvCopy, cvResetImageROI的方式实现。
而2.x版本以后,图像用Mat来表示。图像的复制方法比较多,例如
src.clone()
src.copyTo(dst)
src.copyTo(dst, mask)
dst与src类型相同时,直接创建并复制图像数据(深copy),
src.convertTo(dst, type, scale, shift)
当src.depth==dst.depth且noscale时,等同于copyTo(创建并复制);其他,转换并复制数据。
------------
而复制子图像ROI采用1.x版本的思路就比较费劲了。
Mat图像提供了adjustROI来更改图像的ROI,但使用起来很不方便。如果采用1.x版本的实现,将图像由Mat转换为IplImage格式,就更麻烦了。
但Mat提供引用的方式获取子图像数据。如
m.row(i), m.col(h), m.rowRange(), m.colRange(),这几个函数的实现都源于
m(roi),创建新的Mat header,并不复制图像数据。相当于返回ROI子图像的引用。
这样,复制一个图像的ROI到另外一个图像的指定区域就简单多了。如opencv中给出的例子
Rect r(1, 1, 10, 20); // 指定src 的 ROI子图像区域
Mat dstroi = dst(Rect(0,10,r.width,r.height)); // 拿到 dst指定区域子图像的引用
src(r).convertTo(dstroi, dstroi.type(), 1, 0); // ROI子图像之间的复制
此时,无需指定图像的ROI,计算也比较方便,清晰。
-------------
ps: m.reshape 更改图像的维度(通道数),但并不更改原始图像的数据,原理等同于 更改mat header 信息,获取子图像引用,但不复制图像数据。
repeat(), flip()操作都会创建新的dst图像并复制src数据。
- OPENCV C++接口的复制roi数据。
- OpenCV中图像及子图像ROI之间的复制
- OpenCV中图像及子图像ROI之间的复制
- OpenCV中图像及子图像ROI之间的复制
- opencv的ROI操作
- 【OpenCV】复制、切割出图像ROI区域
- opencv的ROI的提取
- OpenCV:ROI使用的注意事项
- opencv 的 ROI 和 COI
- 关于OPENCV ROI的使用
- Opencv的ROI代码分析
- C/C++ OpenCV设置感兴趣区域ROI
- C/C++ OpenCV设置感兴趣区域ROI
- opencv roi
- opencv ROI
- opencv:ROI
- OpenCV复制一个或多个ROI图像区域
- OpenCV中关于感兴趣的区域ROI
- poj1948 Triangular Pastures
- Maxiee的Vim入门日记(5)——用Vim看aMule代码
- 05.net网站开发(设计):2.MVC控制器与视图的简单收发数据
- 对Warning: Attempt to present on whose view is not in the window hierarchy!的解决方案
- openfire 插件开发 打包
- OPENCV C++接口的复制roi数据。
- 客户端网页编程:CSS页面布局基础
- poj 2031 Building a Space Station
- php 判断上传文件类型 $_files[]['type']值大全
- Session 与Cookie
- poj 2079 Triangle(旋转卡壳)
- How To Check and Use Serial Ports Under Linux
- ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
- Get all tables' name from sqlite database