博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
转: CvMat,Mat和IplImage之间的转化和拷贝
阅读量:5153 次
发布时间:2019-06-13

本文共 1939 字,大约阅读时间需要 6 分钟。

1、CvMat之间的复制

//注意:深拷贝 - 单独分配空间,两者相互独立  CvMat* a;  CvMat* b = cvCloneMat(a);   //copy a to b

2、Mat之间的复制

//注意:浅拷贝 -  不复制数据只创建矩阵头,数据共享(更改a,b,c的任意一个都会对另外2个产生同样的作用)Mat a;Mat b = a; //a "copy" to bMat c(a); //a "copy" to c//注意:深拷贝Mat a;Mat b = a.clone(); //a copy to bMat c;a.copyTo(c); //a copy to c

3、CvMat转Mat

//使用Mat的构造函数:Mat::Mat(const CvMat* m, bool copyData=false);    默认情况下copyData为falseCvMat* a;//注意:以下三种效果一致,均为浅拷贝Mat b(a);    //a "copy" to bMat b(a, false);    //a "copy" to bMat b = a;    //a "copy" to b//注意:当将参数copyData设为true后,则为深拷贝(复制整个图像数据)Mat b = Mat(a, true); //a copy to b

4、Mat转CvMat

//注意:浅拷贝Mat a;CvMat b = a; //a "copy" to b//注意:深拷贝Mat a;CvMat *b;CvMat temp = a; //转化为CvMat类型,而不是复制数据cvCopy(&temp, b); //真正复制数据 cvCopy使用前要先开辟内存空间

==========IplImage与上述二者间的转化和拷贝===========

1、IplImage之间的复制

这个不赘述了,就是cvCopy与cvCloneImage使用区别,贴张网上的图:

2、IplImage转Mat

//使用Mat的构造函数:Mat::Mat(const IplImage* img, bool copyData=false);    默认情况下copyData为falseIplImage* srcImg = cvLoadImage("Lena.jpg");//注意:以下三种效果一致,均为浅拷贝Mat M(srcImg);Mat M(srcImg, false);Mat M = srcImg;//注意:当将参数copyData设为true后,则为深拷贝(复制整个图像数据)Mat M(srcImg, true);

3、Mat转IplImage

//注意:浅拷贝 - 同样只是创建图像头,而没有复制数据Mat M;IplImage img = M;IplImage img = IplImage(M);//深拷贝cv::Mat img2;IplImage imgTmp = img2;IplImage *input = cvCloneImage(&imgTmp);

4、IplImage转CvMat

//法一:cvGetMat函数IplImage* img;CvMat temp;CvMat* mat = cvGetMat(img, &temp);    //深拷贝//法二:cvConvert函数CvMat *mat = cvCreateMat(img->height, img->width, CV_64FC3);    //注意height和width的顺序cvConvert(img, mat);    //深拷贝

5、CvMat转IplImage

//法一:cvGetImage函数CvMat M;IplImage* img = cvCreateImageHeader(M.size(), M.depth(), M.channels());cvGetImage(&M, img);    //深拷贝:函数返回img//也可写成CvMat M;IplImage* img = cvGetImage(&M, cvCreateImageHeader(M.size(), M.depth(), M.channels()));//法二:cvConvert函数CvMat M;IplImage* img = cvCreateImage(M.size(), M.depth(), M.channels());cvConvert(&M, img);    //深拷贝

 

转载于:https://www.cnblogs.com/Key-Ky/p/4150531.html

你可能感兴趣的文章
错误 warning: LF will be replaced by CRLF in README.md.
查看>>
Linux CentOS7 httpd 配置注释
查看>>
Sqlserver2012 评估期已过问题
查看>>
C#调用C++DLL/天地伟业解码器二次开发
查看>>
zend framework 1 连接oracle数据库的写法
查看>>
APUE学习笔记:第九章 进程关系
查看>>
关于 阿里云 的linux 安装 jdk和tomcat 中的问题(解压版的jdk和tomcat)
查看>>
使用localStorage保存搜索记录
查看>>
PHP队列
查看>>
PhpStudy 升级 MySQL 版本到5.7
查看>>
程序代码记Log
查看>>
ORACLE 11G使用用EXPDP导出时,空表不能导出
查看>>
2017-2018-1 20155216 实验三:并发程序
查看>>
图像旋转
查看>>
九宫格抽奖
查看>>
阅读笔记第五章
查看>>
金蝶数据库执行语句
查看>>
前端SEO技巧
查看>>
python+selenium遇到鼠标悬停不成功可以使用js进行操作
查看>>
我的退休程序修正过程
查看>>