矩阵和图像类型(Mat; CvMat; IplImage 的相互转化)

在开始学习OpenCV的矩阵和图像类型之前,我们需要知道

两件事情

  1. 在OpenCV中没有向量(vector)结构,任何时候需要向量,都只需要一个列矩阵(如果需要一个转置或共轭向量,则需要一个行矩阵);
  2. OpenCV矩阵的概念与我们在线性代数课上学习的概念相比,更抽象,尤其是矩阵的元素,并非只能取简单的数值类型,可以是多通道的值。

CvArr; CvMat; IplImage 的关系:

IplImage派生于CvMat, CvMat又派生于CvArr;

IplImage详解:https://blog.csdn.net/MRZHUGH/article/details/83537490

CvMat详解:https://blog.csdn.net/MRZHUGH/article/details/83537503

Mat详解:https://blog.csdn.net/MRZHUGH/article/details/83537519

Mat; CvMat; IplImage 的相互转化:

/*IplImage转化成Mat*/
IplImage* srcImg = cvLoadImage("I_M.jpg");

Mat M(srcImg);
Mat M(srcImg, false);//false改成true是深拷贝
Mat M = srcImg;
 
/*Mat转化成IplImage*/
Mat M;
IplImage img = M;
IplImage img = IplImage(M);

/*IplImage转化成CvMat*/

//通过cvGetMat函数实现
IplImage* img;
CvMat temp;
CvMat* mat = cvGetMat(img, &temp);

//通过cvConvert函数实现
CvMat *mat = cvCreateMat(img->height, img->width, CV_64FC3);
cvConvert(img, mat);	

/*CvMat转化成IplImage*/

//通过cvGetImage函数实现
CvMat M;
IplImage* img = cvCreateImageHeader(M.size(), M.depth(), M.channels());
cvGetImage(&M, img);

//通过cvConvert函数实现
CvMat M;
IplImage* img = cvCreateImage(M.size(), M.depth(), M.channels());
cvConvert(&M, img);

革命尚未成功,同志仍需努力。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZPILOTE

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值