失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Opencv3编程入门学习笔记(二)之显式创建Mat对象

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

时间:2018-12-20 08:41:44

相关推荐

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

以下总结是基于《Opencv3编程入门》一书4.1节总结的内容进行验证与总结,验证环境均为Windows10 ---VS 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));

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

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

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

Mat mtx(img);

这个方法笔者在VS 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;

如果觉得《Opencv3编程入门学习笔记(二)之显式创建Mat对象》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。