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