付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、简1、OpenCV的特(1)(2)(3)OpenCV模2、有用的学习资(1)册(2)源(3)籍(4)处理例程(在<opencv-(5)理例程(在<opencv-3、OpenCV命名规(1)函数名(2)矩阵数据类型(3)图像数据类型(4)头文件(1)(2)5、C例二、GUI指(1)定位一个新窗口(2)(3)(4)(5)改变窗口大小(1)处理鼠标事件(2)处理键盘事件(3)动条事件三、OpenCV的基本数据结(1)IPL图像2、矩阵与向(1)(2)(3)(1)点(2)大小(以像素为精度(3)的偏置和大小(1)内存给一幅新图像(2)图像(3)图像(4)设置/获取感区域(5)设置/获取感通道(1)件中读入图像(2)图像(1)假设你要第k通道、第i行、第j列的像素(2)间接:(通用,但效率低,可任意格式的图像(3)直接:(效率高,但容易出错(4)基于指针的直接:(简单高效(5)基于c++wrapper的直接:(更简单高效(1)字节型图像的灰度-彩色转换(2)彩像->灰度图像(3)不同彩色空间之间的转换(1)矩形(2)圆形(3)线段(4)一组线段(5)一组填充颜色的多边形(6)标注(1)总体上(2)为新矩阵分配内存(3)矩阵内存(4)矩阵(5)初始化矩阵(6)矩阵为单位矩阵(1)假设需要一个2D浮点型矩阵的第(i,j)个单元(2)间接(3)直接(假设矩阵数据按4字节行对齐(4)直接(当数据的行对齐可能存在间隙时possiblealignment(5)对于初始化后的矩阵进行直接(1)间的运算(2)间的元素级运算(3)(4)阵的运算(5)线性方程求解(6)特征值与特征向量(矩阵为方阵六、处(1)OpenCV支持从头或文件(AVI格式)中捕捉帧画面(2)初始化一个头捕捉器(3)初始化一个文件捕捉器(4)捕捉一帧画面(5)流捕捉器(1)获取流设备信息(2)获取帧图信息(3)设置从文件抓取的第一帧画面的位置(1)初始化编写器(2)保持文件(3)编写器1、OpenCV的特总体描提供了面向InIPP高效多函数库的接口可针对你使用的InCPU优化代码,提高程序性能(译注:OpenCV2.0版的代码已显着优化,无需IPP来提升性能,故2.0IPP接口)功Imagedatamanipulation(allocation,release,copying,setting,ImageandI/O(fileandcamerabasedinput,image/fileMatrixandvectormanipulationandlinearalgebraroutines(products,solvers,eigenvalues,Variousdynamicdatastructures(lists,queues,sets,trees,Basicimageprocessing(filtering,edgedetection,cornerdetection,samplingandinterpolation,colorconversion,morphologicaloperations,histograms,imagepyramids).Structuralysis(connectedcomponents,contourprocessing,distancetransform,variousmoments,templatematching,Houghtransform,polygonalapproximation,linefitting,ellipsefitting,Delaunaytriangulation).Cameracalibration(findingandtrackingcalibrationpatterns,calibration,fundamentalmatrixestimation,homographyestimation,stereocorrespondence).Motionysis(opticalflow,motionsegmentation,Objectrecognition(eigen-methods,BasicGUI(displayimage/,keyboardandmousehandling,scroll-Imagelabelinglineconicpolygon,textdrawing)OpenCV模cv–函数cvaux–c–数据结构与线性代数highguiGUIml–2、有用的参考手册<opencv-root>/docs/index.htm(译注:在你的OpenCV安装 网络资源 : :书籍OpenSourceComputerVisionbyGaryR.Bradski,VadimPisarevsky,andJean-YvesBouguet,Springer,1sted.(June,2006).chenyusiyuan:补充以下书籍LearningOpenCV-ComputerVisionwiththeOpenCVbyGaryBradski&AdrianKaehler,O'ReillyMedia,1sted.(September,OpenCV——基础作者:于,航空航天大学,日期:200706处理例程(<opencv-颜色:点:动作分割边缘检测laplace图像处理例程(<opencv-边缘检测图像分割形态学直方图距离变换椭圆拟合:filipse3、OpenCV命名规函数名Action功能(corefunctionality)(e.g.set==目标图像区域imagearea)(e.g.contour, =(可选的)调整语(optionalmodifiers)(e.g.argument矩阵数据类型S=符号整型U=无符号整型F=浮点型E.g.:CV_8UC1是指一个8位无符号整型单通道矩阵,图像数据类型E.g.:IPL_DEPTH_8U图像像素数据是8位无符号整型.IPL_DEPTH_32F图像像素数据是32位浮点型.头文件#include#include#include<cvaux.h>#include<highgui.h>#include<ml.h>#include //一般不需要,cv.h4、编译建o-world-I/usr/local/include/opencv-L -lm-lcv-lhighgui-5、C例//该程序从文件中读入一幅图像,将之反色,然后显示出来#include<stdlib.h>#include<stdio.h>#include<math.h>#include<cv.h>#includeintmain(intargc,char{IplImage*img=intheight,width,step,channels;uchar*data;intprintf("Usage:main<image-file-}printf("Couldnotloadimagefile:}//gettheimage =img- =img- =img- =img- =(uchar*)img-printf("Processinga%dx%dimagewith%d//createa}//release}//releasethecvReleaseImage(&img);return0;//waitfora//showthe//invertthe//相当于for(i=0;i<height;i++)for(j=0;j<width;j++)for(k=0;k<channels;k++)二、GUI1、窗口管创建和定位一个新窗口载入图像IplImage*img=0;IplImage*img=0;if(!img)printf("Couldnotloadimagefile:显示图像型图像像素值范围为[0-1]。彩像的三色元素按BGR(蓝-红-绿)顺序。关闭窗口改变窗口大小cvResizeWindow("win1",100,100);cvResizeWindow("win1",100,100);//newwidth/heighin2、输入处处理鼠标事件voidvoidmouseHandler(intevent,intx,inty,intflags,void*{caseif(flags&printf("Leftprintf("LeftbuttondownwithCTRLcaseprintf("Leftbutton}} 处理键盘事件intintkey=cvWaitKey(10);//wait10msforintint yforif(key==27)break;case'h':case'i':}}处理滑动条事件voidvoidtrackbarHandler(int{}intintintpos=(译注:OpenCV1.1、1.2或2.0版本中各数据结构的结构体元素有所调整,以下仅作参考)1、图像数据结IPL图像|--//|--//像素的位深| IPL_DEPTH_8U,| | | |--//图像宽度(像素为单位|--//|char* //图像数据指||//像按BGR数|-- //0-面|//1-|//cvCreateImage|-- 0–像素原点为左上角|//1–像素原点为左下角(Windowsbitmaps|-- //|-- //图像的大小(字节为单位)=|struct_IplROI*roi;//区域(ROI).ROI //处理仅限于ROI区域|--char*imageDataOrigin;//|//(需要正确地重新分配图像内存|//(neededforcorrectimage|-- //图像数据的行对齐:4or8byte|//OpenCV中无此项,采用widthStep//2、矩阵与(1)2D矩|-- //元素(uchar,short,int,float,double)与标| //整行长度字| rows //| height,width;//矩阵高度、宽度,与rows、cols对|--union|-- //datapointerforanunsignedchar|-- //datapointerforashort|-- //datapointerforaninteger|-- //datapointerforafloat|--double* //datapointerforadouble //N-维矩| //元素(uchar,short,int,float,double)与标| //|--union |-- //datapointerforanunsignedchar |-- //datapointerforashort |-- //datapointerforaninteger |-- //datapointerforafloat |--double* //datapointerforadouble||struct //| //| //元素间距(字节为单位CvSparseMatCvSparseMat//N-一般矩阵//仅作为函数定义的参数使用//表明函数可以接受不同类型的矩阵作为参数//例如:IplImage*,CvMat*甚至是//矩阵的类型通过矩阵头的前4个字节信息来确标量|doubleval[4//4D向初始化函数CvScalarCvScalars=cvScalar(doubleval0,doubleval1=0,doubleval2=0,double//CvScalars=cvScalar(20.0);小写的,而结构体名第一个字母是大写的。它并不是一个C++(译注:类似的还有cvMat与CvMat、cvPoint与CvPoint等等)3、其它结构类(1)p=cvPoint(intx,intCvPoint2D32fp=cvPoint2D32f(floatx,floatCvPoint3D32fp=cvPoint3D32f(floatx,floaty,float矩形框大小(以像素为精度r=cvSize(intwidth,int r=cvSize2D32f(floatwidth,floatr=cvRect(intx,inty,r=cvRect(intx,inty,intwidth,int1、图像的(1)配内存给一幅新图像IplImage*IplImage*cvCreateImage(CvSizesize,intdepth,intsize:depth:像素深度IPL_DEPTH_8U,IPL_DEPTH_8Schannels:像素通道数Canbe1,2,3or各通道是交错排列的.一幅彩像的数据排列格式如下b0g0r0b1g1r1示例////Allocatea1-channelbyteIplImage*//Allocatea3-channelfloatIplImage*(2)图像IplImage*IplImage*(3)图像IplImage*IplImage*IplImage* //注意通过cvCloneImage得到的//也要用,否则容易产生内存设置/获取感区域 cvSetImageROI(IplImage*image,CvRectrect); cvResetImageROI(IplImage*image);CvRectcvGetImageROI(constIplImage*OpenCV设置/获取感通道voidvoidcvSetImageCOI(IplImage*image,intcoi);//intcvGetImageCOI(constIplImage*OpenCVCOI.2、图像读从文件中读入图像IplImage*IplImage*if(!img)if(!img)printf("Couldnotloadimagefile:支持的图像格式BMPDIBJPEGJPGJPE,PNGPBMPGMOpenCV默认将读入的图像强制转换为一幅三通道彩像.不过可以按以下方法修改读入flag:>0像=0<0读入的图像通道数与所读入的文件相同保存图像if(!cvSaveImage(outFileName,img))if(!cvSaveImage(outFileName,img))printf("Couldnotsave:%s\n",outFileName中的扩展名确定.3、图像像假设你要第k通道、第i行、第j列的像素间接:(通用,但效率低,可任意格式的图像IplImage*IplImage*img=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);CvScalars;IplImage*IplImage*CvScalarCvScalars=cvGet2D(img,i,j);//getthe(i,j)pixelvalue直接:(效率高,但容易出错IplImage*IplImage*IplImage*IplImage*IplImage*IplImage*((float*)(img->imageData+i*img->widthStep))[j*img->nChannels+0]=111;//((float*)(img->imageData+i*img->widthStep))[j*img->nChannels+1]=112;//((float*)(img->imageData+i*img->widthStep))[j*img->nChannels+2]=113;//基于指针的直接:(简单高效IplImage*IplImage* =intint=img-int=img-int=img-uchar*=(uchar*)img-data[i*step+j]=IplImage*IplImage* =int=img-int=img-int=img-int =img-uchar*=(uchar*)img-IplImage*IplImage* =int=img-int=img-int=img-int =img-float*=(float*)img-基于c++wrapper的直接:(更简单高效cwrapperImage’Image定义不同类型的图像template<classT>class{IplImage*Image(IplImage*img=0)voidoperator=(IplImage*img)inlineT*operator[](constintrowIndx)return((T*)(imgp->imageData+rowIndx*imgp-typedefunsignedchar}typedeffloat}typedef typedef typedeftypedefImage<unsigned typedefIplImage*IplImage*img=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);BwImageimgA(img);imgA[i][j]=IplImage*IplImage*img=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,3); imgA[i][j].b=imgA[i][j].g=imgA[i][j].r=RgbImageFloatimgA(img);imgA[i][j].b=imgA[i][j].g=imgA[i][j].r=4、图像转字节型图像的灰度-彩色转换cvConvertImage(src,cvConvertImage(src,dst,flags=0);src=float/bytegrayscale/colorimagedst=bytegrayscale/colorimageflags (R和B通道彩像->灰度图像////UsingtheOpenCV//Usingadirectfor(i=0;i<cimg->height;i++)for(j=0;j<cimg->width;j++)gimgA[i][j]=(uchar)(cimgA[i][j].b*0.114+不同彩色空间之间的转换=5、绘图指绘制矩形////在点(100,100)(200,200)之间绘制一矩形,边线用红色、宽度为绘制圆形////圆心为(100,100)、半径为20.圆周绿色、宽度为cvCircle(img,cvPoint(100,100),20,cvScalar(0,255,0),绘制线段////绘制一组线段 CvPoint*curveArr[2]={curve1,voidcvPolyLine(CvArr*img,CvPoint**pts,int*npts,intcontours,intCvScalarcolor,intthickness=1,intline_type=8,shift=0 绘制一组填充颜色的多边形例voidcvFillPoly(CvArr*img,CvPoint**pts,int*npts,intcontours,CvScalarcolor,line_type=8,intshift=0 文本标注CvFontCvFontdoubledoubledouble其它可用的字体类型有:CV_FONT_HERSHEY_SIMPLEX,CV_FONT_HERSHEY_PLAIN, CV_FONT_HERSHEY_SCRIPT_SIMPLEX,CV_FONT_ 1、矩阵的总体上OpenCVCC++语言的替代方案可以为新矩阵分配内存CvMat*CvMat*cvCreateMat(introws,intcols,inttype:矩阵元素类型按CV_<bit_depth>(S|U|F)C<number_of_channels>方式指定 例如:CV_8UC1示例CvMat*M=矩阵内存CvMat*CvMat*M=矩阵CvMat*CvMat*M1=cvCreateMat(4,4,CV_32FC1);CvMat*M2;初始化矩阵doubledoublea[]={ 9,10,11,12CvMatMa=cvMat(3,4,CV_64FC1,//等价于CvMatcvInitMatHeader(&Ma,3,4,CV_64FC1,初始化矩阵为单位矩阵CvMat*CvMat*M=cvSetIdentity(M);//doesnotseemtobeworking2、矩阵元假设需要一个2D浮点型矩阵的第(i,j)个单元间接cvmSet(M,i,j,2.0);cvmSet(M,i,j,2.0);//Sett=cvmGet(M,i,j);//Get直接(假设矩阵数据按4字节行对齐CvMat*CvMat* =int=M-float*data=M-data[i*n+j]=直接(当数据的行对齐可能存在间隙时possiblealignmentCvMat*M =CvMat*M =cvCreateMat(4,4,CV_32FC1); =M->step/sizeof(float);float*data=M-(data+i*step)[j]=对于初始化后的矩阵进行直接doubledoubleCvMatMa=cvMat(3,4,CV_64FC1,a);a[i*4+j]=2.0;//Ma(i,j)=2.0;3、矩阵/向量运矩阵之间的运算CvMatCvMat*Ma,*Mb,cvAdd(Ma,Mb,// cvSub(Ma,Mb,//Ma- cvMatMul(Ma,cvMatMul(Ma,Mb, // ->矩阵之间的元素级运算CvMatCvMat*Ma,*Mb,cvMul(Ma,Mb, // ->cvDiv(Ma,Mb,// cvAddS(Ma,cvScalar(-10.0),Mc);//Ma.-10->向量乘积doubledoubleva[]={1,2,doublevb[]={0,0,1};doublevc[3];CvMatVa=cvMat(3,1,CV_64FC1,CvMatVb=cvMat(3,1,CV_64FC1,vb);CvMatVc=cvMat(3,1,CV_64FC1,vc); Va.Vb->//向量叉乘 VaxVb->单一矩阵的运算CvMatCvMat*Ma,cvTranspose(Ma,//转置:transpose(Ma)->Mb(注意转置阵不能返Ma本身CvScalarCvScalartcvTrace(Ma迹:trace(Madoubled=//行列式:det(Ma)->cvInvert(Ma,//逆矩阵:inv(Ma)非齐次线性方程求解CvMat*CvMat* =CvMat*x =cvCreateMat(3,1,CV_32FC1);CvMat* =cvSolve(&A,&b,//solve(Ax=b)for特征值与特征向量(矩阵为方阵CvMat*CvMat*A=cvCreateMat(3,3,CV_32FC1);CvMat*E=cvCreateMat(3,3,CV_32FC1);CvMat*l=cvCreateMat(3,1,CV_32FC1);cvEigenVV(&A&E&l);lA的特征值(递减顺序//E=对应的特征向量(行向量CvMat*CvMat*A=cvCreateMat(3,3,CV_32FC1);CvMat*U=cvCreateMat(3,3,CV_32FC1);CvMat*D=cvCreateMat(3,3,CV_32FC1);CvMat*V
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年贵州盘江国有资本运营有限责任公司校园招聘笔试模拟试题及答案解析
- 2026年广州珠江实业集团有限公司校园招聘笔试参考题库及答案解析
- 2026年国电电力新疆新能源开发有限公司校园招聘考试备考试题及答案解析
- 2026年中石化宁波工程公司校园招聘笔试参考题库及答案解析
- 2026年中国邮政集团公司北京市分公司校园招聘笔试参考题库及答案解析
- 2026年佛山交通发展总公司校园招聘考试备考题库及答案解析
- 2026广东深圳市优才人力资源有限公司公开招聘聘员(派遣至龙城街道)18人考试备考试题及答案解析
- 2026年仓储自动化中的装卸系统设计与优化
- 2026河北邯郸市第一医院医疗健康集团选聘53人备考题库附参考答案详解【基础题】
- 2026年自动化文档生成的Python技巧
- 2026新疆兵团第七师胡杨河市公安机关社会招聘辅警358人笔试备考试题及答案解析
- 2026年安徽新闻出版职业技术学院单招综合素质考试题库及一套答案详解
- DLT 5035-2016 发电厂供暖通风与空气调节设计规范
- 新教科版六年级科学下册教学计划
- 应征入伍服兵役高等学校学生国家教育资助申请表
- 2型糖尿病及围手术期血糖管理【骨科】-课课件
- 污水泵站工艺及施工课件
- 中国酒城醉美泸州四川泸州旅游攻略城市风土人情介绍PPT图文课件
- DB34T 2915-2022 公路水运工程三阶段安全风险分析与预防管理规程
- 国际标准行业分类第4版ISICRev-4中文版
- 2022年吉林大学第二医院医护人员招聘考试笔试题库及答案解析
评论
0/150
提交评论