1.使用固定数据创建一个矩阵
float val[]={0.86,-0.5,0.5,0.866};
CvMat rotmat;
cvInitMatHeader(&rotmat,2,2,CV_32FC1,val);
cout<<cvGetElemType(&rotmat)<<" "<<cvGetDims(&rotmat)<<" "<<cvGetDimSize(&rotmat,0)<<endl;
2.使用矩阵数据的存取
CvMat *mat=cvCreateMat(5,5,CV_32FC1);
float element_3_2=CV_MAT_ELEM(*mat,float,3,2);
*(float *)CV_MAT_ELEM_PTR(*mat,3,2)=7.7; //
合适的数据访问方式
float sum(CONST CvMat * mat)
{
float s=0.0;
for (int row=0;row<mat->rows;row++)
{
const float * ptr=(const float*)(mat->data.ptr+mat->step*row);
for(int col=0;col<mat->cols;col++)
s+=*ptr++;
}
return s;
}
3.IplImage数据结构
1)depth深度的取值情况
IPL_DEPTH_1U 8u
IPL_DEPTH_8U 8s
IPL_DEPTH_16U 16s
IPL_DEPTH_32F 32s
2)orgin设置坐标原点的位置在左上角或左下角IPL_ORIGIN_TL或IPL_ORIGIN_BL
3)使用ROI限定感兴趣区域
cvSetImageROI(frame,cvRect(0,0,100,100));
cvAddS(frame,cvScalar(255,255,255),frame);
cvResetImageROI(frame);