OpenCV – Mat与lplImage和CvMat的相互转换
原创文章,作者:StubbornHuang,如若转载,请注明出处:《OpenCV – Mat与lplImage和CvMat的相互转换》https://www.stubbornhuang.com/413/
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类似上例。
当前分类随机文章推荐
- OpenCV - 使用findContours()查找图片轮廓线,并将轮廓线坐标点输出
- OpenCV - 新建一个图片,并在图片上画由一点到另一点的直线,采用反走样形式
- OpenCV - 创建新图像以及遍历图片像素值和设置像素值
- OpenCV - 打开视频文件,并对其中的每一帧图像进行Canny算子边缘化提取,并将结果保存为视频文件
- OpenCV - 读取一个图像,并使用Canny算子进行边缘提取
- OpenCV - 打开摄像头并用窗口显示摄像头的内容
- OpenCV - 打开摄像头并对摄像头获取的每一帧图像进行Canny算子边缘化提取操作
- OpenCV - 读取一张图片显示,并将其重写为灰度图
- OpenCV - Mat与lplImage和CvMat的相互转换
- OpenCV - 静态图片人脸检测和摄像头人脸检测
全站随机文章推荐
- WordPress - 增加百度统计代码
- FFmpeg - 音频处理基本概念以及音频重采样(采样率转换)
- mciSendCommand在Win10上奔溃的问题解决/循环播放音乐
- UnrealEngine4 - 将TextureRenderTarget2D保存为图片
- VTK读取序列的Dicom医学图片,用Marchingcube进行重建,并保存为obj文件
- 工具网站推荐 - 最好的8个免费下载Pbr贴图和材质的网站
- UnrealEngine4 - error C4668: 没有将“_WIN32_WINNT_WIN10_TH2”定义为预处理器宏,用“0”替换“#if/#elif
- C++ Map中存储动态指针时正确释放内存
- WordPress - 查看别人的网站是用的WordPress的哪个主题
- OpenCV - 静态图片人脸检测和摄像头人脸检测