第三章: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.
听,说,读,写, 习惯。 技术方面的东西看中文早就过时罗,从来都不看中文的东西。要习惯性的把中文忘掉,习惯性的看英文。
不
要事必躬亲哦。影响你的那个啥。精力,我们应该做重要的东西。