1、Mat mat;
可以运用mat=Mat::zeros(r,c,type)来进行初始化,Mat类里面的zeros和matlab中类似,职责就是创建相应大小矩阵并返回,type可以用CV_8UC1,CV_8UC3等
也可以用mat.create(r,c,type)进行初始化
调用mat.clone()可以复制当前的mat矩阵数据
2、可以自己定义颜色
#define ColorB (Scalar(255,0,0))
#define ColorG (Scalar(0,255,0))
#define ColorR (Scalar(0,0,255))
3、mat.channels和mat.step属性,分别代表通道数,和每一行像素的长度
4、对mat中(r,c)的像素进行访问和赋值,对于单通道图像可以
mat.data[r*mat.step+c] 或者 mat.at
对于三通道访问BGR则是
mat.data[r*data.step+c+0]、mat.data[r*data.step+c+1]、mat.data[r*data.step+c+2]
mat.at
5、画线画圆可以用line函数、circle函数, 画椭圆可以用ellipse函数
6、在Opencv 中调用cvSub函数时,如果相减的两个矩阵都是CV_8UC1,那么小于0的数在函数中会自动置零。而不是普通对于无符号数的相减,会负数会取反码。
7、在Opencv 1.0种,可以运用cvGet2D,cvSet2D进行对矩阵数值操作,也可以运用mat.data.ptr获取数据区的首指针,然后进行数据获取。注意,cvmGet,cvmSet,只可以运用于CV_32FC1或者CV_64FC1的二维矩阵中存取值。不可用于CV_8UC1等。
int nn = 0;
for (int i = 0; i<5; i++)
{
unsigned char * p = (unsigned char*)(mat1->data.ptr+i*mat1->step);
for (int j = 0; j<5; j++)
{
*(p+j) = nn;
nn++;
}
}
8、
驴儿先生笔记,不断更新中zzz...