ImageVerifierCode 换一换
格式:DOCX , 页数:90 ,大小:37.87KB ,
资源ID:10621742      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10621742.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(openCV快速入门.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

openCV快速入门.docx

1、openCV快速入门摘要:本文旨在帮助读者快速入门OpenCV,而无需阅读冗长的参考手册。掌握了OpenCV的以下基础知识后,有需要的话再查阅相关的参考手册。 目录隐藏 1 一、简介 1.1 1、OpenCV的特点 1.1.1 (1) 总体描述 1.1.2 (2) 功能 1.1.3 (3) OpenCV模块 1.2 2、有用的学习资源 1.2.1 (1) 参考手册: 1.2.2 (2) 网络资源: 1.2.3 (3) 书籍: 1.2.4 (4) 视频处理例程(在 /samples/c/): 1.2.5 (5) 图像处理例程 (在 /samples/c/): 1.3 3、OpenCV 命名规则

2、1.3.1 (1) 函数名: 1.3.2 (2) 矩阵数据类型: 1.3.3 (3) 图像数据类型: 1.3.4 (4) 头文件: 1.4 4、编译建议 1.4.1 (1) Linux: 1.4.2 (2) Windows: 1.5 5、C例程 2 二、GUI 指令 2.1 1、窗口管理 2.1.1 (1) 创建和定位一个新窗口: 2.1.2 (2) 载入图像: 2.1.3 (3) 显示图像: 2.1.4 (4) 关闭窗口: 2.1.5 (5) 改变窗口大小: 2.2 2、输入处理 2.2.1 (1) 处理鼠标事件: 2.2.2 (2) 处理键盘事件: 2.2.3 (3) 处理滑动条事件: 3

3、 三、OpenCV的基本数据结构 3.1 1、图像数据结构 3.1.1 (1) IPL 图像: 3.2 2、矩阵与向量 3.2.1 (1) 矩阵: 3.2.2 (2) 一般矩阵: 3.2.3 (3) 标量: 3.3 3、其它结构类型 3.3.1 (1) 点: 3.3.2 (2) 矩形框大小(以像素为精度): 3.3.3 (3) 矩形框的偏置和大小: 4 四、图像处理 4.1 1、图像的内存分配与释放 4.1.1 (1) 分配内存给一幅新图像: 4.1.2 (2) 释放图像: 4.1.3 (3) 复制图像: 4.1.4 (4) 设置/获取感兴趣区域ROI: 4.1.5 (5) 设置/获取感兴趣通

4、道COI: 4.2 2、图像读写 4.2.1 (1) 从文件中读入图像: 4.2.2 (2) 保存图像: 4.3 3、访问图像像素 4.3.1 (1) 假设你要访问第k通道、第i行、第j列的像素。 4.3.2 (2) 间接访问: (通用,但效率低,可访问任意格式的图像) 4.3.3 (3) 直接访问: (效率高,但容易出错) 4.3.4 (4) 基于指针的直接访问: (简单高效) 4.3.5 (5) 基于 c+ wrapper 的直接访问: (更简单高效) 4.4 4、图像转换 4.4.1 (1) 字节型图像的灰度-彩色转换: 4.4.2 (2) 彩色图像-灰度图像: 4.4.3 (3) 不同

5、彩色空间之间的转换: 4.5 5、绘图指令 4.5.1 (1) 绘制矩形: 4.5.2 (2) 绘制圆形: 4.5.3 (3) 绘制线段: 4.5.4 (4) 绘制一组线段: 4.5.5 (5) 绘制一组填充颜色的多边形: 4.5.6 (6) 文本标注: 5 五、矩阵处理 5.1 1、矩阵的内存分配与释放 5.1.1 (1) 总体上: 5.1.2 (2) 为新矩阵分配内存: 5.1.3 (3) 释放矩阵内存: 5.1.4 (4) 复制矩阵: 5.1.5 (5) 初始化矩阵: 5.1.6 (6) 初始化矩阵为单位矩阵: 5.2 2、访问矩阵元素 5.2.1 (1) 假设需要访问一个2D浮点型矩阵

6、的第(i, j)个单元. 5.2.2 (2) 间接访问: 5.2.3 (3) 直接访问(假设矩阵数据按4字节行对齐): 5.2.4 (4) 直接访问(当数据的行对齐可能存在间隙时 possible alignment gaps): 5.2.5 (5) 对于初始化后的矩阵进行直接访问: 5.3 3、矩阵/向量运算 5.3.1 (1) 矩阵之间的运算: 5.3.2 (2) 矩阵之间的元素级运算: 5.3.3 (3) 向量乘积: 5.3.4 (4) 单一矩阵的运算: 5.3.5 (5) 非齐次线性方程求解: 5.3.6 (6) 特征值与特征向量 (矩阵为方阵): 6 六、视频处理 6.1 1、从视频

7、流中捕捉一帧画面 6.1.1 (1) OpenCV 支持从摄像头或视频文件(AVI格式)中捕捉帧画面. 6.1.2 (2) 初始化一个摄像头捕捉器: 6.1.3 (3) 初始化一个视频文件捕捉器: 6.1.4 (4) 捕捉一帧画面: 6.1.5 (5) 释放视频流捕捉器: 6.2 2、获取/设置视频流信息 6.2.1 (1) 获取视频流设备信息: 6.2.2 (2) 获取帧图信息: 6.2.3 (3) 设置从视频文件抓取的第一帧画面的位置: 6.3 3、保存视频文件 6.3.1 (1) 初始化视频编写器: 6.3.2 (2) 保持视频文件: 6.3.3 (3) 释放视频编写器: 编辑一、简介编

8、辑1、OpenCV的特点编辑(1) 总体描述 OpenCV是一个基于C/C+语言的开源图像处理函数库 其代码都经过优化,可用于实时处理图像 具有良好的可移植性 可以进行图像/视频载入、保存和采集的常规操作 具有低级和高级的应用程序接口(API) 提供了面向Intel IPP高效多媒体函数库的接口,可针对你使用的Intel CPU优化代码,提高程序性能(译注:OpenCV 2.0版的代码已显着优化,无需IPP来提升性能,故2.0版不再提供IPP接口) 编辑(2) 功能 图像数据操作(内存分配与释放,图像复制、设定和转换) Image data manipulation (allocation,

9、release, copying, setting, conversion). 图像/视频的输入输出(支持文件或摄像头的输入,图像/视频文件的输出) Image and video I/O (file and camera based input, image/video file output). 矩阵/向量数据操作及线性代数运算(矩阵乘积、矩阵方程求解、特征值、奇异值分解) Matrix and vector manipulation and linear algebra routines (products, solvers, eigenvalues, SVD). 支持多种动态数据结构(

10、链表、队列、数据集、树、图) Various dynamic data structures (lists, queues, sets, trees, graphs). 基本图像处理(去噪、边缘检测、角点检测、采样与插值、色彩变换、形态学处理、直方图、图像金字塔结构) Basic image processing (filtering, edge detection, corner detection, sampling and interpolation, color conversion, morphological operations, histograms, image pyrami

11、ds). 结构分析(连通域/分支、轮廓处理、距离转换、图像矩、模板匹配、霍夫变换、多项式逼近、曲线拟合、椭圆拟合、狄劳尼三角化) Structural analysis (connected components, contour processing, distance transform, various moments, template matching, Hough transform, polygonal approximation, line fitting, ellipse fitting, Delaunay triangulation). 摄像头定标(寻找和跟踪定标模式、参数

12、定标、基本矩阵估计、单应矩阵估计、立体视觉匹配) Camera calibration (finding and tracking calibration patterns, calibration, fundamental matrix estimation, homography estimation, stereo correspondence). 运动分析(光流、动作分割、目标跟踪) Motion analysis (optical flow, motion segmentation, tracking). 目标识别(特征方法、HMM模型) Object recognition (ei

13、gen-methods, HMM). 基本的GUI(显示图像/视频、键盘/鼠标操作、滑动条) Basic GUI (display image/video, keyboard and mouse handling, scroll-bars). 图像标注(直线、曲线、多边形、文本标注) Image labeling (line, conic, polygon, text drawing) 编辑(3) OpenCV模块 cv 核心函数库 cvaux 辅助函数库 cxcore 数据结构与线性代数库 highgui GUI函数库 ml 机器学习函数库 编辑2、有用的学习资源编辑(1) 参考手册: /d

14、ocs/index.htm (译注:在你的OpenCV安装目录内) 编辑(2) 网络资源: 官方网站: 软件下载: 编辑(3) 书籍: Open Source Computer Vision Library by Gary R. Bradski, Vadim Pisarevsky, and Jean-Yves Bouguet, Springer, 1st ed. (June, 2006). chenyusiyuan: 补充以下书籍 Learning OpenCV - Computer Vision with the OpenCV Library by Gary Bradski & Adrian

15、 Kaehler, OReilly Media, 1 st ed. (September, 2008). OpenCV教程基础篇 作者:刘瑞祯 于仕琪,北京航空航天大学出版社,出版日期:200706 编辑(4) 视频处理例程(在 /samples/c/): 颜色跟踪: camshiftdemo 点跟踪: lkdemo 动作分割: motempl 边缘检测: laplace 编辑(5) 图像处理例程 (在 /samples/c/): 边缘检测: edge 图像分割: pyramid_segmentation 形态学: morphology 直方图: demhist 距离变换: distrans

16、椭圆拟合: fitellipse 编辑3、OpenCV 命名规则编辑(1) 函数名: cvActionTargetMod(.) Action = 核心功能(core functionality) (e.g. set, create) Target = 目标图像区域(target image area) (e.g. contour, polygon) Mod = (可选的)调整语(optional modifiers) (e.g. argument type)编辑(2) 矩阵数据类型: CV_(S|U|F)C S = 符号整型 U = 无符号整型 F = 浮点型 E.g.: CV_8UC1 是指

17、一个8位无符号整型单通道矩阵, CV_32FC2是指一个32位浮点型双通道矩阵.编辑(3) 图像数据类型: IPL_DEPTH_(S|U|F) E.g.: IPL_DEPTH_8U 图像像素数据是8位无符号整型. IPL_DEPTH_32F图像像素数据是32位浮点型.编辑(4) 头文件:#include #include #include #include #include / 一般不需要,cv.h 内已包含该头文件编辑4、编译建议编辑(1) Linux:g+ hello-world.cpp -o hello-world -I /usr/local/include/opencv -L /usr

18、/local/lib -lm -lcv -lhighgui -lcvaux编辑(2) Windows:在Visual Studio的选项和项目中设置好OpenCV相关文件的路径。 编辑5、C例程 / hello-world.cpp/ 该程序从文件中读入一幅图像,将之反色,然后显示出来. /#include #include #include #include #include int main(int argc, char *argv) IplImage* img = 0; int height,width,step,channels; uchar *data; int i,j,k; if(a

19、rgc2) printf(Usage: main n7); exit(0); / load an image img=cvLoadImage(argv1); if(!img) printf(Could not load image file: %sn,argv1); exit(0); / get the image data height = img-height; width = img-width; step = img-widthStep; channels = img-nChannels; data = (uchar *)img-imageData; printf(Processing

20、 a %dx%d image with %d channelsn,height,width,channels); / create a window cvNamedWindow(mainWin, CV_WINDOW_AUTOSIZE); cvMoveWindow(mainWin, 100, 100); / invert the image / 相当于 cvNot(img); for(i=0;iheight;i+) for(j=0;jwidth;j+) for(k=0;kchannels;k+) datai*step+j*channels+k=255-datai*step+j*channels+

21、k; / show the image cvShowImage(mainWin, img ); / wait for a key cvWaitKey(0); / release the image cvReleaseImage(&img ); return 0;编辑二、GUI 指令 编辑1、窗口管理 编辑(1) 创建和定位一个新窗口:cvNamedWindow(win1, CV_WINDOW_AUTOSIZE); cvMoveWindow(win1, 100, 100); / offset from the UL corner of the screen编辑(2) 载入图像:IplImage*

22、 img=0; img=cvLoadImage(fileName); if(!img) printf(Could not load image file: %sn,fileName);编辑(3) 显示图像:cvShowImage(win1,img);该函数可以显示彩色或灰度的字节型/浮点型图像。字节型图像像素值范围为0-255;浮点型图像像素值范围为0-1。彩色图像的三色元素按BGR(蓝-红-绿)顺序存储。 编辑(4) 关闭窗口:cvDestroyWindow(win1);编辑(5) 改变窗口大小:cvResizeWindow(win1,100,100); / new width/heigh

23、in pixels编辑2、输入处理 编辑(1) 处理鼠标事件: 定义一个鼠标处理程序: void mouseHandler(int event, int x, int y, int flags, void* param) switch(event) case CV_EVENT_LBUTTONDOWN: if(flags & CV_EVENT_FLAG_CTRLKEY) printf(Left button down with CTRL pressedn); break; case CV_EVENT_LBUTTONUP: printf(Left button upn); break; x,y:

24、相对于左上角的像素坐标 event: CV_EVENT_LBUTTONDOWN, CV_EVENT_RBUTTONDOWN, CV_EVENT_MBUTTONDOWN, CV_EVENT_LBUTTONUP, CV_EVENT_RBUTTONUP, CV_EVENT_MBUTTONUP, CV_EVENT_LBUTTONDBLCLK, CV_EVENT_RBUTTONDBLCLK, CV_EVENT_MBUTTONDBLCLK, CV_EVENT_MOUSEMOVE: flags: CV_EVENT_FLAG_CTRLKEY, CV_EVENT_FLAG_SHIFTKEY, CV_EVENT_

25、FLAG_ALTKEY, CV_EVENT_FLAG_LBUTTON, CV_EVENT_FLAG_RBUTTON, CV_EVENT_FLAG_MBUTTON 注册该事件处理程序: mouseParam=5; cvSetMouseCallback(win1,mouseHandler,&mouseParam);编辑(2) 处理键盘事件: 实际上对于键盘输入并没有专门的事件处理程序. 按一定间隔检测键盘输入(适用于循环体中): int key; key=cvWaitKey(10); / wait 10ms for input 中止程序等待键盘输入: int key; key=cvWaitKey(

26、0); / wait indefinitely for input 键盘输入的循环处理程序: while(1) key=cvWaitKey(10); if(key=27) break; switch(key) case h: . break; case i: . break; 编辑(3) 处理滑动条事件: 定义一个滑动条处理程序: void trackbarHandler(int pos) printf(Trackbar position: %dn,pos); 注册该事件处理程序: int trackbarVal=25; int maxVal=100; cvCreateTrackbar(bar1, win1, &trackbarVal ,maxVal , trackbarHandler); 获取当前的滑动条位置: int pos = cvGetTrackbarPos(bar1,win1); 设置滑动条位置: cvSetTrackbarPos(bar1, win1, 25);编辑三、OpenCV的基本数据结构 (译注:OpenCV 1.1、1.2或2.0版本中各数据结构的结构体元素有所调整,以下仅作参考) 编辑1、图像数据结构 编辑(1) IPL 图像:IplImage |- int nChannels; / 颜

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1