Opencv3编程入门学习笔记(二)之显式创建Mat对象

14 篇文章 0 订阅
2 篇文章 0 订阅

以下总结是基于《Opencv3编程入门》一书4.1节总结的内容进行验证与总结,验证环境均为Windows10 ---VS2013 C++环境,验证Opencv3.0提供的开发包。

1. 方法壹---Mat()构造函数

Mat M(2,2,CV_8UC3,Scalar(0,0,255));

这是最常用的方法,以上示例构造了一个二位多通道图像。

2. 方法贰---在C\C++中通过构造函数进行初始化

int sz[3] = {2,2,2};

Mat L(3,sz,CV_8UC3,Scalar::all(0));

这个方法笔者在VS2013 C++编译环境中验证没有通过。

3. 方法叁---为已存在的IplImage指针创建信息头

IplImage* img = cvLoadImage("1.jpg",1);

Mat mtx(img);

这个方法笔者在VS2013 C++编译环境中验证没有通过,至于IplImage指针如何转换成Mat还有待探索。

4. 方法肆---使用create()函数

Mat mat();

mat.create(4,4,CV_8UC(2));

这个方法验证可以正常编译,但输出结果与书中所对应结果不同。

5. 方法伍---采用Matlab方式的初始化

a. Mat E = Mat::eye(4,4,CV_64F);

创建了一个4*4的单位矩阵

b. Mat O = Mat::ones(2,2,CV_32F);

创建了一个2*2的全1矩阵

c. Mat Z = Mat::zeros(3,3,CV_8UC1);

创建了一个3*3的全0矩阵

小结:以上验证均可通过。

6. 方法陆---对小矩阵使用逗号分割式初始化函数

Mat C = (Mat_<double>(3,3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);

经验证可以正常使用。

7. 方法柒---为已存在的对象创建信息头

Mat C = (Mat_<double>(3,3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);

Mat RowClone = C.row(1).clone();

RowClone对C矩阵中的第二行进行了克隆,注意row()中的参数是从0开始。

注意:

a. 以上程序均在书中有详细注解;

b. 在控制台输出矩阵统一都可以使用 cout << "C=" <<endl << " " << C << endl << endl;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

二十四桥下一句

您的鼓励是我最大的创作动力

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

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

打赏作者

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

抵扣说明:

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

余额充值