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 b
Mat c(a); //a "copy" to c//注意:深拷贝
Mat a;
Mat b = a.clone(); //a copy to b
Mat c;
a.copyTo(c); //a copy to c

3、CvMat转Mat

//使用Mat的构造函数:Mat::Mat(const CvMat* m, bool copyData=false);    默认情况下copyData为false
CvMat* a;
//注意:以下三种效果一致,均为浅拷贝
Mat b(a);    //a "copy" to b
Mat b(a, false);    //a "copy" to b
Mat 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为false
IplImage* 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);    //深拷贝

CvMat,Mat和IplImage之间的转化和拷贝相关推荐

  1. CvMat、Mat、IplImage之间的转换详解及实例

    IplImage: 在OpenCV中IplImage是表示一个图像的结构体,也是从OpenCV1.0到目前最为重要的一个结构: 在之前的图像表示用IplImage,而且之前的OpenCV是用C语言编写 ...

  2. 【OpenCV】OpenCV函数精讲之 -- Mat和IplImage之间的相互装换(OpenCV2.0和OpenCV3.0)

    Mat是OpenCV和C++接口的矩阵类,IplImage是OpenCV和C语言接口的结构体. Mat读取显示用的是imread.imshow等,IplImage读取显示用的是cvLoadImage( ...

  3. OpenCV中IplImage/CvMat/Mat转化关系

    原文链接:http://www.cnblogs.com/summerRQ/articles/2406109.html 如对内容和版权有何疑问,请拜访原作者或者通知本人. opencv中常见的与图像操作 ...

  4. opencv中Mat与IplImage,CVMat类型之间转换

    opencv中对图像的处理是最基本的操作,一般的图像类型为IplImage类型,但是当我们对图像进行处理的时候,多数都是对像素矩阵进行处理,所以这三个类型之间的转换会对我们的工作带来便利. Mat类型 ...

  5. IplImage, CvMat, Mat 的关系和相互转换 再次理解 /(ㄒoㄒ)/~~

    opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,Mat类型侧重于计算,数学性较高,openCV对Mat类型的计算也进行了优化. ...

  6. IplImage, CvMat, Mat 的关系和相互转换(转)

    opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,Mat类型侧重于计算,数学性较高,openCV对Mat类型的计算也进行了优化. ...

  7. Mat转换为IplImage 类型和CvMat 类型

    cv::Mat img; CvMat cvMatImg = img; IplImage IplImg = img; 转载:http://blog.csdn.net/zhuwei1988

  8. opencv 内存数据转matlab,OpenCV:IplImage, CvMat, Mat 相互转换

    cv::Mat cv::Mat preMat; //第一种转换方式 IplImage imgIpl1 = preMat; //第二种转换方式 IplImage imgIpl2 = preMat.ope ...

  9. mwArray和Mat之间的转化

    在使用 C++ 调用 matlab 函数时,通常会用到 mwArray 和 cv::Mat 之间的转化,尤其是在做图像处理时,一维之间的转化很简单,这里不做过多介绍,下面主要介绍一下二维之间的转化: ...

最新文章

  1. Java加视频特效,实现伪原创
  2. LeetCode 211. 添加与搜索单词 - 数据结构设计(Trie树)
  3. html5 a-z字母排序,Js按A-Z排序通讯录(中文、英文、特殊字符)
  4. PAT (Basic Level) Practice 1006 换个格式输出整数
  5. 即插即用 | 超越CBAM,全新注意力机制,GAM不计成本提高精度(附Pytorch实现)...
  6. paip.hql的调试故障排查流程总结
  7. 计算机exsl表f4代表锁定,Excel中F4技巧,相对引用、绝对引用和混合引用
  8. 制作u盘winpe启动盘_系统U盘启动盘制作教程,老毛桃U盘启动装机工具帮你做
  9. 在线破解hash的优秀网站
  10. 存储之磁盘阵列RAID
  11. java创建临时文件夹_java生成临时文件夹和删除临时文件夹
  12. python os库的常用函数记录
  13. CST微波工作室端口和激励
  14. 网页设计志愿招募平台模块
  15. 互联网公司技术网站 公众号
  16. pic16F877A音乐盒c语言,基于PIC16F877A单片机的混沌信号发生器的设计
  17. 春季儿童吃什么有助于长高,3款适合孩子长高的食谱做法,学起来
  18. 安卓支持App内文字翻译
  19. Protobuf 介绍与实战30:google/protbuf/any.proto, api.proto, descriptor.proto,empty.proto 在什么位置
  20. easyui 合并列_Easyui DataGrid 合并单元格

热门文章

  1. mysql的时间存储格式
  2. 吴恩达Drive.ai因经营困难“卖身”苹果
  3. Cannot find snapshot in models/VGGNet/VOC0712/SSD_300x300
  4. DataPipeline联合Confluent Kafka Meetup上海站
  5. MyBatis框架概述
  6. php function集合
  7. 使用Newtonsoft.Json
  8. 一则android软件开发工程师的招聘信息
  9. 谈 三层结构与MVC模式的区别
  10. firebug 的使用