快速了解OpenCV简介和两个例子分享资料

上传人:工**** 文档编号:579903322 上传时间:2024-08-27 格式:PPT 页数:28 大小:865.50KB
返回 下载 相关 举报
快速了解OpenCV简介和两个例子分享资料_第1页
第1页 / 共28页
快速了解OpenCV简介和两个例子分享资料_第2页
第2页 / 共28页
快速了解OpenCV简介和两个例子分享资料_第3页
第3页 / 共28页
快速了解OpenCV简介和两个例子分享资料_第4页
第4页 / 共28页
快速了解OpenCV简介和两个例子分享资料_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《快速了解OpenCV简介和两个例子分享资料》由会员分享,可在线阅读,更多相关《快速了解OpenCV简介和两个例子分享资料(28页珍藏版)》请在金锄头文库上搜索。

1、Contentsv一、一、 OpenCV简介与特点简介与特点v二、命名规则二、命名规则v三、三、 OpenCV模块与功能模块与功能v四、例子:鼠标绘图四、例子:鼠标绘图1Opencv简介简介v由一系列由一系列 C C 函数和少量函数和少量 C+ C+ 类构成类构成v实现了图像处理和计算机视觉方面的很多通用算法。实现了图像处理和计算机视觉方面的很多通用算法。v包括包括 300 300 多个多个C C函数的跨平台的中、高层函数的跨平台的中、高层 APIAPI。v它不依赖于其它的外部库它不依赖于其它的外部库尽管也可以使用某些外部尽管也可以使用某些外部库。库。 Intel Open Source Co

2、mputer Vision Library2vMatlab,IPL, CxImage 效率/速度Opencv注重速度商业化Matlab 适合研究,仿真仿真质量费用与源代码编程与安装配置3OpenCV特点特点Intel Open Source Computer Vision LibraryOpenCVOpenCV的几个显著优点:的几个显著优点:跨平台跨平台, ,移植性好:移植性好:Windows, Linux, Mac OSWindows, Linux, Mac OSOpenOpen:免费,且源代码公开:免费,且源代码公开实时性,商业化:代码优化,速度快实时性,商业化:代码优化,速度快使用方便使

3、用方便缺点:缺点:BugBug,安装配置麻烦,安装配置麻烦4OpenCV 功能功能v图像图像/ /视频的读写视频的读写v数字图像的处理数字图像的处理v目标识别与跟踪目标识别与跟踪v3D3D重建与标定重建与标定DFT灰度图灰度图canny边沿检测边沿检测Harr小波变换小波变换人脸检测人脸检测5二二. OpenCV的命名规则的命名规则 OpenCVOpenCV中使用大小写混合样式来标识外部函数、中使用大小写混合样式来标识外部函数、数据类型和类方法。数据类型和类方法。v外部外部函数使用前缀函数使用前缀cvcv:cvCreateImagecvCreateImagev内部函数使用前缀内部函数使用前缀I

4、cvIcvv数据结构数据结构(C(C结构体、枚举、联合体、类结构体、枚举、联合体、类) )使使用用前缀前缀CvCv:CvSizeCvSize,CvPointCvPointv外部或某些内部外部或某些内部宏使用前缀宏使用前缀CV_CV_:CV_DEPTH_8UCV_DEPTH_8Uv内部宏使用前缀内部宏使用前缀ICV_ICV_6(1)函数名)函数名: cvActionTargetMod(.) vAction = 核心功能核心功能 (e.g. set, create) vTarget = 目标图像区域目标图像区域 (e.g. contour, polygon)vMod = (可选的)调整语可选的)调

5、整语 (e.g. argument type) e.g.: cvGet2D、cvCreateImage、cvNamedWindowcv+算法算法/对象:对象:cvSobel, cvCanny, cvRodrigues, cvSqrt, cvGoodFeaturesToTrackcv+容器元素容器元素+动作名动作名 OpenCV 命名规则命名规则7(2)内部宏数据类型:)内部宏数据类型:矩阵数据类型矩阵数据类型:CV_(S|U|F)CS = 符号整型符号整型 U = 无符号整型无符号整型 F = 浮点型浮点型E.g.: v CV_8UC1 :一个:一个8位无符号整型单通道矩阵位无符号整型单通道矩

6、阵vCV_32FC2:一个:一个32位浮点型双通道矩阵位浮点型双通道矩阵图像数据类型图像数据类型: IPL_DEPTH_(S|U|F)vIPL_DEPTH_8U 图像像素数据是图像像素数据是8位无符号整型位无符号整型.v IPL_DEPTH_32F图像像素数据是图像像素数据是32位浮点型位浮点型.鼠标事件:鼠标事件:event=CV_EVENT_BUTTONvCV_EVENT_LBUTTONUP,CV_EVENT_RBUTTONDOWN vCV_EVENT_LBUTTONDBLCLK8v(3).数据结构数据结构: CvMat(矩阵),(矩阵),CvPoint(点点),CvSize(矩形框矩形框

7、)v(4).头文件头文件:#include #include #include #include #include / 一般不需要,一般不需要,cv.h 内已包内已包 /含该头文件含该头文件9三三. OpenCV模块模块vcv cv 核心函数库核心函数库vcxcore cxcore 数据结构与线性代数库数据结构与线性代数库vcvaux cvaux 辅助函数库辅助函数库vhighgui GUIhighgui GUI函数库函数库 vml ml 机器学习函数库机器学习函数库10cxcore数据结构数据结构矩阵矩阵/ /向量操作及线性代数运算:矩阵乘积、矩阵方程求向量操作及线性代数运算:矩阵乘积、矩阵

8、方程求解、特征值、奇异值分解解、特征值、奇异值分解离散变换:离散变换:DFTDFT,离散余弦变换,离散余弦变换内存管理:内存分配与释放,图像复制、设定和转换内存管理:内存分配与释放,图像复制、设定和转换 动态结构:链表、队列、数据集、树、图动态结构:链表、队列、数据集、树、图 绘图函数:曲线,形状,文本,点集绘图函数:曲线,形状,文本,点集错误处理错误处理11基本数据结构基本数据结构v点:点:CvPoint, CvPoint2D32f, CvPoint3D32fCvPoint, CvPoint2D32f, CvPoint3D32fv矩形框:矩形框:CvSizeCvSize,CvSize2D32

9、f CvSize2D32f ,CvRect CvRect v矩阵:矩阵:CvMat,CvMat, CvMatND , CvSparseMat CvMatND , CvSparseMat ,CvArr*CvArr*v向量:向量:CvScalarCvScalarvIPLIPL图像:图像:IplImageIplImage(一个(一个channelchannel是一个是一个CvMat CvMat )12 CvPoint3D32fCvPointCvPoint2D32f点点13矩形与向量矩形与向量CvSizeCvSize2D32f CvRectCvScalar可存放在可存放在1至至4个捆绑数据的容器个捆绑

10、数据的容器 14矩阵矩阵15IPLIPL图像数据结构图像数据结构IplImage* image = cvCreateImage( cvSize(width, height), depth,channel );16cv基本图像处理(去噪、边缘检测、角点检测、采样基本图像处理(去噪、边缘检测、角点检测、采样与插值、色彩变换、形态学处理、直方图、图像金与插值、色彩变换、形态学处理、直方图、图像金字塔结构)字塔结构)结构分析(连通域结构分析(连通域/ /分支、轮廓处理、距离转换、图分支、轮廓处理、距离转换、图像矩、模板匹配、霍夫变换、多项式逼近、曲线拟像矩、模板匹配、霍夫变换、多项式逼近、曲线拟合、椭

11、圆拟合、狄劳尼三角化)合、椭圆拟合、狄劳尼三角化) 运动分析和目标识别(光流、动作分割、目标跟踪,运动分析和目标识别(光流、动作分割、目标跟踪,特征方法、特征方法、HMMHMM模型)模型) 摄像头定标与摄像头定标与3D3D重构(寻找和跟踪定标模式、参数重构(寻找和跟踪定标模式、参数定标、基本矩阵估计、单应矩阵估计、立体视觉匹定标、基本矩阵估计、单应矩阵估计、立体视觉匹配)配) 17e.g.:去噪v使用扩展使用扩展 Sobel 算子计算一阶、二阶、三阶或混合图像差分算子计算一阶、二阶、三阶或混合图像差分 :void cvSobel(); v采用采用 Canny 算法做边缘检测算法做边缘检测 vo

12、id cvCanny();vHarris角点检测角点检测 void cvCornerHarris();v计算图像的计算图像的 Laplacian 变换变换 :18IO/GUI (highgui)图形用户界面:图形用户界面:v处理窗口事件处理窗口事件e.g.: cvNamedWindow() e.g.: cvNamedWindow() v处理滑动条事件处理滑动条事件e.g.:cvGetTrackbarPos()e.g.:cvGetTrackbarPos()v处理鼠标处理鼠标/ /键盘输入事件键盘输入事件e.g.:cvWaitKey()e.g.:cvWaitKey()读取与显示图像读取与显示图像

13、e.g.: cvShowImage() e.g.: cvShowImage()视频读写函数视频读写函数 e.g.e.g.: cvCaptureFromCAM()cvCaptureFromCAM()实用函数与系统函数实用函数与系统函数19highgui示例示例#include cv.h#include highgui.h int main( int argc, char* argv ) IplImage *frame; CvCapture *capture = cvCaptureFromAVI(1.avi); if( !capture)printf( Can not open video fil

14、e 1.avin);return -1;cvNamedWindow(avi_output,1 );程序运行演示程序运行演示20vwhile(frame = cvQueryFrame(capture)vvcvShowImage(avi_output,frame);vif( cvWaitKey(2) = 0 )vbreak;vvcvWaitKey();vcvDestroyWindow(avi_output);v cvReleaseImage( &frame );v cvReleaseCapture( &capture );v程序运行演示程序运行演示21cvaux立体视觉立体视觉通过立体视觉来实现的

15、动作识别通过立体视觉来实现的动作识别基于轮廓线的形状匹配基于轮廓线的形状匹配模式识别模式识别一维和二维隐马尔可夫模型一维和二维隐马尔可夫模型纹理描述纹理描述22四四. 例子:鼠标绘图例子:鼠标绘图v#include stdafx.hv#include cv.hv#include highgui.hv#include v#include v vIplImage* inpaint_mask = 0, img0 = 0, *img = 0, *inpainted = 0;vCvPoint prev_pt = -1,-1;v vvoid on_mouse( int event, int x, int

16、y, int flags, void* zhang)vv if( !img )v return;v if( event = CV_EVENT_LBUTTONUP | !(flags & CV_EVENT_FLAG_LBUTTON) )v prev_pt = cvPoint(-1,-1);23v else if( event = CV_EVENT_LBUTTONDOWN )v prev_pt = cvPoint(x,y);v else if( event = CV_EVENT_MOUSEMOVE & (flags & CV_EVENT_FLAG_LBUTTON) )v v CvPoint pt

17、= cvPoint(x,y);v if( prev_pt.x = 2 ? argv1 : (char*)fruits.jpg;v v if( (img0 = cvLoadImage(filename,-1) = 0 )v return 0;v v printf( Hot keys: nv tESC - quit the programnv tr - restore the original imagenv ti or ENTER - run inpainting algorithmnv tt(before running it, paint something on the image)n )

18、;25v cvNamedWindow( image, 1 );v v img = cvCloneImage( img0 );v inpainted = cvCloneImage( img0 );v inpaint_mask = cvCreateImage( cvGetSize(img), 8, 1 );v v cvZero( inpaint_mask );v cvZero( inpainted );v cvShowImage( image, img );v cvShowImage(inpaint mask, inpaint_mask );v cvSetMouseCallback( image,

19、 on_mouse, 0 );v 26v for(;)v v int c = cvWaitKey(0);if( (char)c = 27 )v break;if( (char)c = r )v cvZero( inpaint_mask );v cvCopy( img0, img,0 ); cvShowImage( inpaint mask, inpaint_mask );v cvShowImage( image, img );v v if( (char)c = i | (char)c = n )v cvNamedWindow( inpainted image, 1 );v cvInpaint( img, inpaint_mask, inpainted, 3, CV_INPAINT_TELEA );v cvShowImage( inpainted image, inpainted );v v v return 1;v程序运行演示程序运行演示2728

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号