OpenCV入门一:Mat与lplImage和CvMat的相互转换

15 篇文章 4 订阅

OpenCV2中新增了方便的Mat类,但是OpenCV中仍然支持C语言的lplImage和CvMat结构,但是在有些时候,出于兼容性的考虑,需要进行Mat与IpIImage和CvMat的转换。

1.Mat转为lplImage和CvMat格式

1.1 Mat转为IplImage结构

Mat img(Size(400,400),CV_8UC3);

lplImage iplimg=img;//转为IplImage结构

1.2 Mat转为CvMat类型

CvMat cvimg=img;//转为CvMat结构

类型转换后,IplImage和CvMat与Mat共用同一矩阵数据,IplImage和CvMat没有引用技术功能,如果img中的数据被释放,那么iplimg和cvimg也同时失去数据。

2.IplImage和CvMat格式转为Mat

Mat类有两个构造函数,可以实现IplImage和CvMat到Mat的转换。这两个函数都有一个参数copyData,如果copyData的值为false,那么Mat将于IplImage或CvMat共用同一矩阵数据,如果值是True,Mat会申请新的内存,然后将IplImage或CvMat的数据复制到Mat的数据区。如果共用数据,Mat不会使用计数器来管理内存,需要自己来管理。建议将参数设置为True.

构造函数如下:

Mat::Mat(const CvMat *m,bool copyData=false)

Mat::Mat(const IplImage * Img,bool copyData=false)

例子:

IplImage *iplimg=cvLoadImage("LOL.jpg");

Mat im(iplimg,true);

CvMat类似上例。

 

如果您觉得这篇博文有用,请访问我的个人站:http://www.stubbornhuang.com,更多博文干货等着您。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HW140701

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值