第二部分---------初探core组件(第四章部分)
OPENCV数据结构与基本绘图
Mat类:
Mat类的构造方法:(本书介绍了7种方法,下面介绍几种常用的)
第一种:
Mat D(2,3,CV_8UC3,Scalar(0,0,255));代表参数 行 列 图像的参数 颜色)
第二种:(创建自定义维数的数组)
int sz[3]={2,2,2};
Mat D(3,size,CV_8UC,Scalar::all(0)); 第一个参数代表三维,第二个参数代表每个维度的大小,后面两个参数的定义与第一个放大一致。然而我照着作者的源码进行操作,VS给我报错。网上也只有跟书上一样的介绍。
第三种:利用create()函数
M.create(4,4,CV_8UC2);值得注意的是这个不能为矩阵设置初值,只能为矩阵重新开辟内存
第四种Matlab式的初始化方法
Mat E =Mat::eye(4,4,CV_8UC2);
Mat F =Mat::zeros(4,4,CV_8UC2);
Mat G=Mat::ones(4,4,CV_8UC2);
第五种:利用imread,clone,copyTo等等函数初始化
Mat m =imread("1.jpg",1);
例子:随机创建Mat矩阵
Mat m=Mat(10,3,CV_8UC3);
randu(m,Scalar::all(0),Scalar(255)); 输出的矩阵 最低值 最高值
格式化输出方法:
cout <<L<<endl 默认的输出形式
cout << format(L, Formatter::FMT_PYTHON) << endl;PYTHON 的输出方式,比较明了
常用的类
Point类
Scalar类: 颜色 注意是BGR而不是RGB
Szie 类 Size(int width ,int height);
颜色空间转换
cvtColor(输入图像,输出图像,颜色空间转换符,目标图像的通道数(如果取0代表着与原图像一致))本人亲自测试,如果原来的输出图像并非符合转换要求的图像,比如说原来输出的图像时单通道,而现在要求是三通道,最后会变为三通道。但是转换的时候必须要求输入图像的通道与转换符要求的一致,比如说输入图像时单通道,你就不能要求进行灰度图像转换。
基本图像的绘制
基本图像的绘制就是一些简单的函数的调用,DrawLine()等等,大家需要用到的时候可以直接照着提示写。