博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
openc下cv::Mat和IplImage的相互转换
阅读量:5286 次
发布时间:2019-06-14

本文共 1165 字,大约阅读时间需要 3 分钟。

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(320,240),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);

 

 

 

 

转载于:https://www.cnblogs.com/usegear/p/4859704.html

你可能感兴趣的文章
request response cookie session
查看>>
NMON记录服务器各项性能数据
查看>>
未找到arm-linux-gcc解决办法
查看>>
统计Xcode项目代码行数
查看>>
认识 service worker
查看>>
第五次团队作业:项目展示
查看>>
C#面向对象(二):封装和继承
查看>>
range()函数
查看>>
少量标签下的模型
查看>>
HOJ-1005 Fast Food(动态规划)
查看>>
FasfDFS整合Java实现文件上传下载
查看>>
用Hadoop构建电影推荐系统
查看>>
[读码时间] 弹出层效果
查看>>
UVAL 4728 Squares(旋转卡壳)
查看>>
Ordered Fractions usaco
查看>>
web框架的概念
查看>>
Codeforces-733C-Epidemic in Monstropolis&&733D-Kostya the Sculptor(乱搞)
查看>>
HDU-4614-Vases and Flowers(线段树)
查看>>
eclipse——代码折叠快捷
查看>>
移动互联网广告 - 第六更 - 移动广告的作弊方法及反作弊 - 2016/12/07
查看>>