Opencv基础教程笔记 1

第三章:Opencv基础 
一。OpenCV命名规则
1。函数命名规则: cvActionTargetMod()  -> MatchShasp()
2.矩阵数据类型:CV_(S|U|F)C(1|2) -> CV-8UC1 表示8位无符号单通道矩阵  -> CV_32FC2 表示32位浮点数双通道矩阵。
3。图像数据类型:IPL_DEPTH_(S|U|F):suf表示矩阵的数据类型 -> IPL_DEPTH_8U 32F 表示8位无符号整数图像。


二。基本数据结构
1。图像结构
  opencv中,所有图像都采用同一个结构IplImage,
2。矩阵与向量结构
  opencv采用一种通用数组的表现形式,用作函数的参数。说明函数在调用该参数时接受多种类型的输入数据形式:比如IplImage* cvMat* 
CvSeq* ,具体的数组形式在运行时应根据实际情况来分析。(就好像c++中的多态性质)
3。其他结构
 1。点的表示:CvPoint   cvPoint2d32f  cvPoint3d32f 
 2.长方形维数的表示 :CvSize  CvSize2D32f 
 3.有偏移量的长方形表示:CvRect      ss


三。矩阵的使用与操作。(矩阵和图像的使用与操作是掌握opencv的基本功能)
 一。分配与释放矩阵
  1。分配矩阵:CvMat* cvCreateMat(int rows , int cols, int type);其中,type表示矩阵元素的类型,可以用如下形式表示cv_(suf)C1-2
  2.释放矩阵:void cvReleaseMat(CvMat**); -> 
      CvMat *M = cvCreateMat(4,4,CV_32FC1); 
      cvReleaseMat(&M);
  3.复制矩阵:  CvMat* cvCloneMat(CvMat*); -> M2=CvCloneMat(M1);
  4.初始化矩阵:
    double a[]={1,2,3,4,5,6,7,8,9,10,11,12}; CvMat Ma=cvMat(3,4,CV_64FC1,a);
    or  CvMat ma; cvinitMatHeader(&Ma,3,4,CV_64FC1,a);
  5.初始化单位矩阵:
    CvMat* M = cvCreateMat(4,4,CV_32FC1);
    cvSetIdentity(M);//好像不是很稳定。


  二。访问矩阵元素
    若访问一个浮点数矩阵的第i行第j列元素,可采用以下几种方式。
    1。直接访问。
      cvmSet(M,i,j,2,0); //Set M(i,j);
      t = cvmGet(M,i,j); //Get M(i,j);
    2.已知对齐方式的直接访问  :例如32位
      CvMat* M =cvCreateMat(4,4,CV_32FC1);  int n = M-> cols;  float *data =M -> data.fl;xx data[i*n+1]=3.0;
    3.未知对齐方式的直接访问。
      CvMat* M = cvCreateMat(4,4,CV_32FC1); int step =M ->step/sizeof(float); float *data=M->data.fl; (data+i*step)[i]=3.0;
    4.直接访问一个已知初始化的矩阵
      double a[16]; CvMat Ma = cvMat(3,4,CV_64FC1,a); a[i*4+j]=2.0;  


  三。矩阵和向量操作
    1。矩阵与矩阵之间的操作
      CvMat *Ma , * Mb , *Mc; 
   cvAdd(Ma,Mb,Mc); // Ma+Mb -> Mc 
   cvSub(Ma,Mb,Mc); // Ma-Mb -> Mc 
   cvMatMul(Ma,Mb,Mc); //Ma*Mb -> Mc
    2。矩阵元素之间的操作
      CvMat *Ma,*Mb,*Mc; 
cvMul(Ma,Mb,Mc);  //Ma * Mb -> Mc
cvDiv(Ma,Mb,Mc);  //Ma/Mb -> Mc
cvAddS(Ma,cvScalar(-10.0),Mc); //Ma -10 ->Mc
   3.向量乘法操作 page56
   4.单个矩阵的操作
   5.非齐次线性系统的求解操作
  6。特征值分析操作(对称矩阵)
   7。奇异分解操作、


  四。GUI命令
   1。创建及定位一个窗口 :cvNamedWindow("win1",CV_WINDOW_AUTOSIZE); cvMoveWindow("win1",100,100);
   2。加载一副图像 : IplImage* img =0; img = cvLoadImage(fileName); if(!img)printf("Could not load image file.:%s\n",fileName);
    3.显示一副图像 : cvShowImage("win1",img); 函数cvShowImage可以显示一个彩色或者灰度的单字节/浮点图像。单字节图像
假设其像素值在区间[0,255]内,浮点数图像则假设其像素值在区间[0,1]内,彩色图像的数据顺序默认是BGR
    4.关闭窗口 :cvDestroyWindow("win1");
    5.缩放窗口 : cvResizeWindow("win1",100,100);


  五。输入处理
    1。鼠标时间处理 page68
    2.键盘事件处理
    3。拖动条事件处理


 六。图像的使用与操作 pagte 69.
    1。分配和释放图像。
    2.复制一副图像
    3。设置或得到感兴趣区域 ROI
    4.设置或得到感兴趣的通道 COI
    5.






听,说,读,写,  习惯。 技术方面的东西看中文早就过时罗,从来都不看中文的东西。要习惯性的把中文忘掉,习惯性的看英文。







要事必躬亲哦。影响你的那个啥。精力,我们应该做重要的东西。

你可能感兴趣的:(Opencv基础教程笔记 1)