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类似上例。
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:OpenCV – Mat与lplImage和CvMat的相互转换
原文链接:https://www.stubbornhuang.com/413/
发布于:2019年11月18日 21:40:21
修改于:2023年06月26日 22:55:56
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
52