OpenCV中Mat与IplImage互转

导读:本篇文章讲解 OpenCV中Mat与IplImage互转,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1)Mat转为IplImage和CvMat格式

可以用简单的等号赋值操作来进行类型转换:

Mat img(Size(320,240),CV_8UC3);
IplImage iplimg = img; //转为IplImage结构

或者用new方法获取指针:

Mat mat_img(Size(320,240),CV_8UC3);
IplImage*  iplimg = new IplImage(mat_img);

如果要转为CvMat类型,操作类似:

CvMat cvimg = img;

注意:类型转换后,IplImage和CvMat与Mat共用同一矩阵数据,而IplImage和CvMat没有引用计数功能,如果上述中的img数据被释放,iplimg和cvimg也就失去了数据,因此要牢记不可将Mat对象提前释放。
如果想完全复制数据:

Mat Img = imread("1.jpg");
IplImage ipl_image = Img;
//深拷贝只要再加一次复制数据:
IplImage *input = cvCloneImage(&ipl_image); 

2)IplImage和CvMat转为Mat格式

IplImage* iplimg = cvLoadImage("lena.jpg");
Mat mat_image_=cv::cvarrToMat(iplimg,true);//第二个参数表示是否复制

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/121306.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!