openc下cv::Mat和IplImage的相互转换
opencv2.0的类CV::Mat和opencv1.0的IplImage之间烦人转换:
cv::Mat matimg = cv::imread ("girl.jpg");
IplImage* iplimg;
*iplimg = IplImage(matimg);
IplImage* iplimg = cvLoadImage("girl.jpg");
cv::Mat matimg;
matimg = cv::Mat(iplimg);
实际上尽量用2.0,因为opencv2.0是用c++写的很棒,没有指针问题一说。c的指针要自己小心小心噢。
MatMat 与 IplImage 和 CvMat 的转换:
在 OpenCV 2 中虽然引入了方便的 , 出于兼容性的考虑, OpenCV依然是支持C语言接口的IplImage和CvMat结构。如果你要与以前的代码兼容, 将会涉及 MatMatMat与 IplImage和 CvMat的转换。
Mat转为IplImage和CvMat格式:
Mat img(Size(,),CV_8UC3);
......
IplImage iplimg = img;//转为IplImage结构 如何要转成CvMat类型:
CvMat cvimg =img;//转为CvMat
需要注意的是,类型转换后IplImage和CvMat、Mat共用一个矩阵数据。IplImage和CvMat没有计数功能,img数据释放,那么IplImage和CvMat也就失去数据了。
IplImage和CvMat格式转为Mat:
Mat有二个构造函数,可以实现iplimage和CvMat到Mat的转换。这两个函数都有一参copyData。如果copyData的值是 false,那么MatMatMat将与IplImage或CvMat共用同一矩阵数据;如果值是true,Mat会新申请内存,然后将会新申请内存,然后将 IplImage或 CvMatCvMat CvMat的数据复制到 Mat的数据区。
如果共用数据,Mat也将不会使用引计数来管理内存,需要开发者 不会使用引计数来管理内存。建议做此转换是将参数置为true,这样内存管理变得简单 。
Mat::Mat(const Cvmat *m,bool copyData=false)
Mat::Mat(const IplImage *img,bool copyData=false)
===================
ImlImage *iplimg = cvLoadImage("girl.jpg");
Mat im(iplimg,true);
openc下cv::Mat和IplImage的相互转换的更多相关文章
- 转: CvMat,Mat和IplImage之间的转化和拷贝
1.CvMat之间的复制 //注意:深拷贝 - 单独分配空间,两者相互独立 CvMat* a; CvMat* b = cvCloneMat(a); //copy a to b 2.Mat之间的复制 / ...
- OpenCV学习笔记(二) cv::Mat
部分内容转自:OpenCV Tuturial,ggicci 在OpenCV Tuturial中可查看Mat的初始化与打印方法. Mat本质上是由两个数据部分组成的类: 矩阵头(包含矩阵尺寸,存储方法, ...
- OpenCV 3.0中IplImage* 转cv::Mat
在OpenCV 2.0中使用: IplImage * ipl1, *ipl2; // ... const cv::Mat m = cv::Mat(ipl,false); cv::Mat m2 = ip ...
- QImage 与 cv::Mat 之间的相互转换
近期做图像处理方面的项目比較多,非常多算法自己从头写的话太浪费时间,并且自己写的也不一定完好,早就听说OpenCV在图像处理算法方面功能非常强大,一直没时间学习,这次正好项目用到了.暂时抱佛脚学习些O ...
- 【记录一个问题】android下的ucontext协程,因为使用栈上的对象,导致cv::Mat被莫名析构
工作的流程是这样:某个协程在栈上创建task对象,在task对象内有需要返回的cv::Mat. 然后把task放到另一个线程上去执行,然后切换到别的协程,等到工作线程执行完task后,再唤醒协程. 这 ...
- CvMat、Mat、IplImage之间的转换详解及实例
见原博客:http://blog.sina.com.cn/s/blog_74a459380101obhm.html OpenCV学习之CvMat的用法详解及实例 CvMat是OpenCV比较基础的函数 ...
- OpenCV之CvMat、Mat、IplImage之间相互转换实例(转)
OpenCV学习之CvMat的用法详解及实例 CvMat是OpenCV比较基础的函数.初学者应该掌握并熟练应用.但是我认为计算机专业学习的方法是,不断的总结并且提炼,同时还要做大量的实践,如编码,才能 ...
- Dlib笔记二:matrix或array2d与cv::Mat的互转
因为经常习惯的用OpenCV来做图像处理,所以难免希望将其他库的图像数据与OpenCV互转,所以今天就记录下这种互转的方法. 1.dlib::matrix/dlib::array2d转cv::Mat ...
- opencv中Mat与IplImage,CVMat类型之间转换
opencv中对图像的处理是最基本的操作,一般的图像类型为IplImage类型,但是当我们对图像进行处理的时候,多数都是对像素矩阵进行处理,所以这三个类型之间的转换会对我们的工作带来便利. Mat类型 ...
随机推荐
- iOS 图像处理 - 图像拼接
解决这个问题:将两个图像拼接在一起 前提:须要加入Framework:CoreGraphics.framework 源代码: - (UIImage *) combine:(UIImage*)leftI ...
- HDU5489 LIS变形
Removed Interval Problem Description Given a sequence of numbers A=a1,a2,…,aN , a subsequence b1,b2, ...
- 98.Ext.form.Label组件的基本用法
转自:https://www.cnblogs.com/kelly/archive/2009/06/05/1496897.html 本篇介绍Ext.form.Label组件的基本用法: 这里通过上一篇介 ...
- C语言程序创建文件夹
#include <stdio.h> #include <process.h> #include <dir.h> int main(void) { int stat ...
- compare正序与逆序
//list:在数据查询出来的Record集合 //juli:是需要比较的字段 //实现一个Comparator接口 //后面减去前面是正序 前面减去后面是倒叙 //我这里做的一个距离排序 R ...
- SQL连接其它服务器操作
Exec sp_droplinkedsrvlogin ZYB,Null --删除映射(录与链接服务器上远程登录之间的映射) Exec sp_dropserver ZYB --删除远程服务器链接 EXE ...
- poj 1564 Sum It Up 搜索
题意: 给出一个数T,再给出n个数.若n个数中有几个数(可以是一个)的和是T,就输出相加的式子.不过不能输出相同的式子. 分析: 运用的是回溯法.比较特殊的一点就是不能输出相同的式子.这个可以通过ma ...
- Android开发笔记(11)——DialogFragment & 点击监听
转载请注明:http://www.cnblogs.com/igoslly/p/6931519.html DialogFragment使用 & 点击监听 /* DialogFragment是用于 ...
- 配置 Sybase数据源
1.Start-- > All Programs -- > Sybase - -> Connectivity --> click ‘Open Client Directory ...
- SLAM:ORB-SLAM 位姿优化描述
只知道算法描述和代码,而不知道原理是比较扯的事情,还是把原理转载一下. 原文链接: http://www.cnblogs.com/luyb/p/5447497.html ORB-SLAM作为单目SLA ...