OPENCV初探(二)

数据结构:
基本数据类型:
CvPoint(,2D32f,3D32f)     CvSize(,2D32f)                                                 CvScale(four double-precision numbers.)  RGBA
                       CvRect            

矩阵和图像类型:
CvArr
   |
   |
   |
CvMat (只是头)   (向量也用矩阵来表示,这和Matlab很象)   CV_<bit_depth>(S|U|F)C<number_of_channels>说明像素可能不是一个数值
   |                   cvCreateMatHeader() + cvCreateData()                                                    cvInitMatHeader(已有头)cvMat(分配头)
   |    (头+数据)             cvCreateMat()                   cvCloneMat         cvReleaseMat 
   |                   step的含义:一行所占的字节数    例如 cols=3   type=CV_32FC1  3x32/8x1=12    CV_32FC3  3x32/8x3=36
   |                   cvGetElemType                    cvGetDims                       cvGetDimSize(制定维数)
   |                   CV_MAT_ELEM() (已转型)     CV_MAT_ELEM_PTR()
   |
IplImage          depth channels 分离    origin(左上或左下) dataOrder(像素或平面)            ROI
                     
构造函数命名规则:
与结构体命名一样,但首字符小写                                                                     例外cvRealScalar()  [1],cvScalarAll() [1-4]

需要注意的地方:
1.使用step避免四字节存取问题
2.注意1xn,nx1,nx3和3xn的区别        
3.IplImage 和CvMat的区别:IplImage数据是BYTE指针   step  ,而CvMat是UNION  step/n
4.在设置了ROI区域后一定要cvResetImageROI(),否则只显示ROI区域
5.重要公式:imageData +y * widthStep+x*nChannels;
6.cvConvertScale()先Scale再Convert
7.cvMul()进行的是对应点的乘法

Code

 

posted @ 2009-07-25 19:16  Orcus  阅读(734)  评论(0编辑  收藏  举报