OpenCV笔记

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(r,c)    //unsigned char == uchar

      对于三通道访问BGR则是

    mat.data[r*data.step+c+0]、mat.data[r*data.step+c+1]、mat.data[r*data.step+c+2]

  mat.at(r,c)[0]、mat.at(r,c)[1]、mat.at(r,c)[2]

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...

你可能感兴趣的:(OpenCV笔记)