OpenCV2:Mat

1 创建Mat对象的几种方法

    根据参考资料[1],下面列出一些创建Mat对象的方法。

1.1 Mat::Mat(int rows, int cols, int type)

Mat img(h, w, CV_32FC1);
解析:创建一个Mat对象img,宽高分别为w,h,数据类型为32位浮点数,单通道,并且为img.data分配内存。


1.2 Mat::Mat(int rows, int cols, int type, const Scalar& s)

Mat img(h, w<span style="font-family: Arial, Helvetica, sans-serif;">,  CV_32FC1,  cv::Scalar(100));</span>
解析:创建一个Mat对象img,宽高分别为w,h,数据类型为32位浮点数,单通道;为img.data分配内存,初始值为100。


1.3 Mat::Mat(int rows, int cols, int type, void* data, size_t step=AUTO_STEP)

Mat img(h, w,  CV_32FC1, (void*)img_data);
解析:创建一个Mat对象img,宽高分别为w,h,数据类型为32位浮点数,单通道;img.data的位置为img_data。

1.4 小结

    除了1.1和1.2在创建对象时都会根据图像的大小分配内存,而这部分内存有时候我们是不需要的,因为图像的数据我们自定义保存在其它地方。这时候可以使用1.3的方法。

2 与IplImage及CvMat之间的转换

2.1 IplImage->Mat

IplImage* img = cvLoadImage("greatwave.jpg", 1);
Mat mtx(img); // convert IplImage* -> Mat

2.2 Mat->IplImage

Mat imgMat;
IplImage pImg= IplImage(imgMat);

2.3 Mat->CvMat

Mat mtx;
CvMat oldmat = mtx; // convert Mat -> CvMat

参考资料

[1]Basic Structures:Mat

[2]OpenCV Mat数据类型及位数总结 

[3][ OpenCV参考手册之Mat类详解2]

[4]关于opencv中Mat类型转换的一个问题

[5]CvArr、Mat、CvMat、IplImage、BYTE转换(总结而来)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

OneSea

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

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

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

打赏作者

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

抵扣说明:

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

余额充值