OpenCV简介(精品)

上传人:无*** 文档编号:252971074 上传时间:2024-11-26 格式:PPT 页数:47 大小:227.50KB
返回 下载 相关 举报
OpenCV简介(精品)_第1页
第1页 / 共47页
OpenCV简介(精品)_第2页
第2页 / 共47页
OpenCV简介(精品)_第3页
第3页 / 共47页
点击查看更多>>
资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,http:/,中国,.,中学政治教学网崇尚互联共享,OpenCV,简介,OpenCV,的特征,OpenCV,具有以下的特征:,()开源计算机视觉采用编写。,()使用目的是开发实时应用程序。,()独立与操作系统、硬件和图形管理器。,()具有通用的图象视频载入、保存和获取模块。,()具有底层和高层的应用开发包。,OpenCV,的功能,应用,OpenCV,能够实现以下功能:,()对图象数据的操作,包括分配、释放、复制和转换数据。,()对图象和视频的输入输出,指文件和摄像头作为输入,图象和视频文件作为输出。,()具有对距陈和向量的操作以及线性代数的算法程序,包括距阵、解方程、特征值以及奇异值。,()可对各种动态数据结构,如列表、队列、集合、树和图等进行操作。,()具有基本的数字图象处理能力,如可进行滤波、边缘检测、角点检测、采样与差值、色彩转换、形态操作、直方图和图象金字塔等操作。,()可对各种结构进行分析,包括连接部件分析、轮廓处理、距离变换、各种距的计算、模板匹配、,Hongh,变换、多边形逼近、直线拟合、椭圆拟合和,Delaunay,三角划分等。,(,7,)对摄像头的定标,包括发现与跟踪定标模式、定标、基本矩阵估计、齐次矩阵估计和立体对应。,(,8,)对运动的分析,如对光流、运动分割和跟踪的分析。,(,9,)对目标的识别,可采用特征法和隐马尔科夫模型(,HMM,)法。,(,10,)具有基本的,GUI,功能,包括图像与视频显示、键盘和鼠标事件处理及滚动条等。,(,11,)可对图像进行标注,如对线、二次曲线和多边形进行标注,还可以书写文字(目前之支持中文)。,OpenCV,模块,OpenCV,包括以下几个模块,其具体功能是:,(,1,),CV,主要的,OpenCV,函数。,(,2,),CVAUX,辅助的(实验性),OpenCV,函数。,(,3,),CXCORE,数据结构与线性代数支持。,(,4,),HIGHGUI,图像界面函数。,(,5,),ML,机器学习,包括模式分类和回归分析等。,(,6,),CVCAM,负责读取摄像头数据的模块(在以后版本中,当,HIGHGUI,模块中加入,Direct Show,支持后,此模块将被废除)。,学习资源,目前,,OpenCV,方面的资源已经很多,当然最简单的方法还是在网上搜索,比如在,Google,搜索引擎(,http:/,),中输入,”,OpenCV,”,即可进行相关查找,这里给出一些信息作为参考。,(,1,)参考手册,英文 请打开文件,/docs/,index.htm,进行查询。,中文 请打开网页,http:/ 网址是,http:/ 网址是,http:/ 网址是,http:/ 和说明也可以参见后面的,PPT,。,OpenCV,采用一种独特的结构,CvArr,*,。,该结构是一个通用数组的表现形式,用做函数的参数,说明函数在调用该参数时接受多种类型的输入数据形式,比如,IplImage,*,,,CvMat,*,甚至,CvSeq,*,。具体的数组形式在运行时应根据实际情况来分析。,其他数据结构,(1),点的表示:,CvPoint,p=,cvPoint(int,x,int,y);,CvPoint2D32f p=cvPoint2D32f(float,x,float,y);,CvPoint3D32f p=cvPoint3D32f(float,x,float,y,float,z);,Eg,:,p.x,=5.0,p.y,=5.0,(2),长方形的维数表示,:,CvSize,r=,cvSize(int,width,int,height);,CvSize2D32f r=cvSize2D32f(float,width,float,height);,(3),有便移量的长方形表示,Cvrect,r,cvrect,(,int,x,int,y,int,width,int,height);,矩阵的使用和操作,.,分配和释放矩阵,OpenCV,有一个矩阵操作的语言的接口,另外也有一些语言的矩阵操作接口,通常语言接口更方便,且同样有效。,在,OpenCV,中,向量是被当成是行或列为的矩阵,并且矩阵在内存中的存储方式是按行存储,且每行按字节对齐。,(1),分配矩阵,分配矩阵的原型为,CvMat,*,cvCreateMat(int,rows,int,cols,int,type);,其中,,type,表示矩阵元素的类型,可以用如下形式表达,CV_(S|U|F)C,Eg,:,CvMat,*M=cvCreateMar(4,4CV_32FC1);,(2),释放矩阵,释放矩阵的函数原型为,Void,cvReleaseMat(CvMat,*);,Eg,:,CvMat,*M=cvCreateMat(4,4,CV_32FC1);,cvReleaseMat(&M,);,(3),复制矩阵,复制矩阵的函数原型为,CvMat,*,cvCloneMat(cvMat,);,Eg,:,CvMat,*M1=cvCreateMat(4,4,CV_32FC1);,CvMat,*M2;,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);,或者:,CvMat,Ma;,CvInitMatHeader(,(5),初始化单位矩阵,可按如下方法初始化一个单位矩阵。,CvMat,*M=cvCreateMat(4,4,CV_32FC1);,cvSetIdentity(M,);,访问矩阵元素,直接访问,下例是对元素,M(i,j,),进行数据赋值和读取。,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,4CV_32FC1);,int,n=M-cots;,float*data=M-,data.fl,;,Datai,*,n+j,=3.0;,(3),未知对齐方式的直接访问,下例是对某种对齐方式存储的元素进行赋值。,CvMat,*M=cvCreateMat(4,4CV_32FC1);,int,step=M-step/,sizeof(float,);,float*data=M-,data.fl,;,(data+i*step)i=3.0;,(4),直接访问一个已初始化的矩阵,下例对已出吃化的矩阵,a,进行数据赋值。,Double a16;,CvMat,Ma=,cvM,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),向量乘法操作,此类型包括:,double,va,=1,2,3;,double,vb,=0,0,1;,double vc3;,CvMat,Va,=cvMat(3,1,CV_64FC1,va);,CvMat,Vb,=cvMat(3,1,CV_64FC1,vb);,CvMat,Vc,=cvMat(3,1,CV_64FC1,vc);,double res=,cvDotProduct(&Va,&Vb,);/dot product:,Va.Vb,-res,cvCrossProduct(&Va,&Vb,&Vc,);/cross,product:Va,*,Vb,-,Vc,注意,VA,VbVc,在叉积中必须是个元素的向量。,(4),单个矩阵的操作,此类型包括:,CvMat,*Ma,*Mb;,cvTranspose(Ma,Mb,);,CvScalar,t=cvTrace(Ma0;,Double d=,cvDet(Ma,);,cvInvert(Ma,Mb,);,(5),非齐次线性系统求解操作,此类型包括:,CvMat,*A=cvCreateMat(3,3,CV_32FC1);,CvMat,*x=cvCreateMat(3,3,CV_32FC1);,CvMat,*b=cvCreateMat(3,3,CV_32FC1);,cvSolve(&A,&b,&x,);,(6),特征值分析(对称矩阵)操作,此类型包括:,CvMat,*A=cvCreateMat(3,3,CV_32FC1);,CvMat,*E=cvCreateMat(3,3,CV_32FC1);,CvMat,*I=cvCreateMat(3,3,CV_32FC1);,cvEigenVV(&A,&E,&I,);,(7),奇异值分解操作,此类型包括:,CvMat,*A=cvCreateMat(3,3,CV_32FC1);,CvMat,*U=cvCreateMat(3,3,CV_32FC1);,CvMat,*D=cvCreateMat(3,3,CV_32FC1);,CvMat,*V=cvCreateMat(3,3,CV_32FC1);,cvSVD(A,DU,V,CV_SVD_U_T|CV_SVD_V_T,);,图象的使用与操作,分配和释放图象,(1),分配一幅图象,分配图象的函数原型为,IplImage,*,cvCreateImage(CvSize,size,int,depth,int,channels);,Eg1:,IplImage,*img1=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);,Eg2:,IplImage,*img2=cvCreateImage(cvSize(640,480),IPL_DEPTH_32F,3);,(2),释放一幅图象,释放图象的函数原型为,Void,cvReleaseImage(IplImage,*);,Eg,:,IplImage,*,img,=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);,cvReleaseImage(&img,);,(3),复制一幅图象,复制图象的函数原型为,IplImage,*,cvCloneImage(IplImage,*);,Eg,:,IplImage,*img1=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);,IplImage,*img2;,Img2=cvCloneImage(img1);,(4),设置或得到感兴趣区域,ROI,函数原型分别为,Void,cvSetImageROI(IplImage,*,image,CvRec,rect,);,Void,cvResetImageROI(IplImage,*image);,vRect,cvGetImageROI(IplImage,*image);,大多数,OpenCv,函数都支持,ROI,。,(5),设置或得到感兴趣区域,COI,函数原型分别为,Void,cvSetImageCOI(IplImage,*,image,int,coi);/0=all,Int,cvGetImageCOI(IplImage,*image);,大多数,OpenCv,函数都支持,COI,。,图象的读写,(1),从文件读区图象,IplImage,*,img,=0;,img,=,cvLoadImage(fileName,);,If(!img,),printf(“Couldnot,load image,file:%sn”,fileName,);,默认情况下:,img,=,cvLoadImage(fileName,flag,);,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!