基于模板匹配的目标跟踪技术研究与实现毕业设计论文(编辑修改稿)内容摘要:
cvActionMethod()四种。 cvActionTarget()类型如 cvCreateImage(), cvNamedWindow()。 cvTarget()类型的非常常见,如 cvMat(), cvSize(), cvPoint()。 cvMethod()类型比较常用的是算法或某方法,如 cvDCT()离散余弦变换算法。 cvActionMethod()的类型如 cvFindContours()轮廓搜寻算法。 此外也有例外,如: DoubleClickedMouse()。 矩阵数据类型 结构如下: 南华大学计算机科学与技术学院毕业设计(论文) 8 CV_bit_depth(S|U|F)Cnumber_of_channels,其中 S 为符号整型, U为无符号整型, F 则为浮点型。 比如 : CV_16UC1 指的就是 16 位的无符号的整型的单通道矩阵; CV_64FC2 指的就是 64 位的浮点型的双通道矩阵。 图像数据类型 结构如下: IPL_DEPTH_bit_depth(S|U|F),其中 S 为符号整型, U 为无符号整型, F 为浮点型。 比如: IPL_DEPTH_16U 图像像素数据值得就是 16 位的无符号的整型。 OpenCV 的基本数据类型 基本数据类型 OpenCV 视觉库提供了多种基本数据类型。 如 CvPoint、 CvSize、 CvRect 和CvScalar。 而在以上提到的这些数据类型当中, CvPoint 这个数据类型最为简单。 CvPoint 是一个包含 了 int 整型成员 x、 y 的简单的结构体。 另一个数据类型与 CvPoint 非常相似,即为 CvSize 这个包含 int 型成员 width 和 height 的简单结构体。 CvRect 类型则是派生于 CvPoint 和 CvSize 类型的复合类型,包含 了 4 个数据成员: width 和 height、还有 x 和 y。 下一个 是 CvScalar , CvScalar 类型拥有着一个单独成员 val 和 4 个都为整型成员,其中的单独成员是一个指向着 4 个双精度的浮点数组成的数组的指针。 CvMat 数据结构 CvArr CvMat IplImage 图 CvArr、 CvMat 和 IplImage 之间派生关系 OpenCV 虽是用 C 语言实现的,但是它的结构还是遵循面向对象的思想设计。 如上图 , IplImage 由 CvMat 派生,而 CvArr 派生了 CvMat。 CvArr*是 一种独特结构。 而 CvMat 是 OpenCV 在运用过程中常用的矩阵。 IplImage 为 OpenCV 所 南华大学计算机科学与技术学院毕业设计(论文) 9 有的图像编码的基本结构。 CvMat 矩阵结构简单,由类型 (type)、行数据长度 (step)、宽度 (width)、高度 (height)和一个指向着数据的指针构成。 作为 OpenCV中的 重要的矩阵变换函数, CvMat 使用方法 是 CvMat* cvCreateMat ( int rows, int cols, int type )。 预定义类型的结构如下: CV_bit_depth (S|U|F)Cnumber_of_channels。 矩阵 的 元素 能够是 32 位 的 浮点型 的 数据 (CV_32FC1),或是无符号 8 位 的 三元组 整型 的 数据 (CV_8UC3), 异或 是无数其他类型元素。 一个 CvMat 元素 它 不一定 非得 是 一 个单一的数字。 在矩阵中可以 由 单一输入来表示多 个数 值,这样 的话 我们 就能够 在一个三原色 的 图像上描绘多重 的 色彩通道。 CvMat 结构: typedef struct CvMat { int type。 int step。 //类型,行数据长度 int* refcount。 //仅供内部使用 int hdr_refcount。 union { uchar* ptr。 short* s。 int* i。 float* fl。 double* db。 } data。 union { int rows。 int height。 //排、高度 }。 union { int cols。 int width。 //列、宽度 }。 } CvMat。 IpLImage 数据结构 OpenCV 中所有图像都采用了同一结构,事实上, IplImage 是借鉴了 Intel 公司 南华大学计算机科学与技术学院毕业设计(论文) 10 在早期公布的 IPP 图像处理开发包中对于相关结构的定义。 因为 OpenCV主要针对计算机视觉方面的处理, 所以, 在 这个 函数库中, IplImage结构 是 最 为关键 重要的结构体。 IplImage 结构 源自 Intel 的另一函数库 Intel Image Processing Library (IPL)。 IplImage 结构定义如下: typedef struct _IplImage { int nSize。 /* 大小 */ int ID。 /* 版本 */ int nChannels。 /* 通道 */ int alphaChannel。 int depth。 /* 像素的位深度 */ char colorModel[4]。 char channelSeq[4]。 int dataOrder。 int origin。 /*原点位置 */ int align。 /*行排列方式 */ int width。 /* 宽像素数 */ int height。 /* 高像素数 */ struct _IplROI * roi。 /* 图像感兴趣区域 */ struct _IplImage * maskROI。 /* NULL */ void * imageId。 /* NULL */ struct _IplTileInfo * tileInfo。 /* NULL */ int imageSize。 /* 数据大小 */ char * imageData。 /* 指向排列的图像数据 */ int widthStep。 /* 排列的图像行大小 */ int BorderMode[4]。 int BorderConst[4]。 char *imageDataOrigin。 } IplImage。 IplImage 是整个 OpenCV 函数库的基础,在定义该结构 变量 时 会 用到函数cvCreatImage。 OpenCV 图像 /视频处理流程 OpenCV 图像 处理流程 使用 OpenCV来处理 数字 图像 其流程包括 如图 所示的 四个基本 过程:( 1) 加 南华大学计算机科学与技术学院毕业设计(论文) 11 载需要处理的图像 , 这可以使用函数 cvLoadImage 实现 ;( 2)使用 图像处理算法对图像进行处理 , OpenCV提供 了很多图像处理算法,比如边缘检测 、 图像 旋转等等 ,但有些算法需要自己编写 ; ( 3)对 图像处理的 结果 进行可视化显示或保存 ,可 使用cvShowImage 函数对处理 结果进行 显示和 使用 cvSaveImage 函数 将 结果 图像保存到相应位置;( 4) 卸载加载的图像 , 这可以用函数 cvReleaseImage 进行实现。 如下 的示例代码是使用 OpenCV 读取 保存在指定 位置 的图片,把它转化成灰度图像 后 对处理 结果 进行显示 和 保存。 从 这个实例我们可以 看出 :使用 OpenCV 可以 很简单的实现对图像 数据 的 读取 操作和显示保存操作。 图像加载图像处理结果显示 、 保存卸载图像cvLoadImage算 法cvShowImagecvSaveImagecvReleaseImage 图 OpenCV图像 处理基本流程 IplImage* colorImg = NULL。 //定义 IplImage 型变量 IplImage* grayImg = NULL。 colorImg = cvLoad(“D:\\”)。 //加载 图像 grayImg=cvCreateImage(cvGetSize(colorImg),colorImgdepth,1)。 //创建 灰度图像cvCvtColor(colorImg, grayImg, CV_RGB2GRAY)。 //转化为 灰度图像 cvNamedWindow (“处理结果 ”, 1)。 //定义 窗口用 于显示结果 cvShowImage(“处理 结果 ”, grayImg)。 //在 窗体 上 显示处理结果 cvSaveImge(“D:\\”, grayImg)。 //将 显示结果进行保存 南华大学计算机科学与技术学院毕业设计(论文) 12 cvReleaseImg(amp。 grayImg)。 //卸载 图像 OpenCV 视频 处理 流程 视频 是由一帧帧的图像构成的 ,对于视频 的处理可以转化成对于一系列图像的处理,一般可按如图 所示的 基本 过程来 实现 :( 1) 加载需要处理的 视频 文件 ,对于avi 视频 文件可使用函数 cvCaptureFromFile 来加载,如果要从摄像头实时捕获视频则要 用函数 cvCreateCameraCapture 来创建摄像头;( 2)使用 cvQueryFrame 从 前面已经创建的 Capture 中抓取一帧图像,如果抓取不成功则说明 视频 处理 完备, 此时要用函数 cvReleaseCapture 卸载 视频文件,否则对所抓取的图像进行 所 要求 的 处理 ; ( 3)对图像处理的 结果 进行可视化显示或保存 ,可 使用 cvShowImage 函数对处理 结果进行显示和 使用 cvSaveImage 函数将 结果 图像保存到相应位置 , 此外还可以使用cvWriteFrame 函数 把所有处理的 结果 保存成一个 AVI 视频文件;( 4) 卸载加载的图像 , 这可以用函数 cvReleaseImage 进行实现。 视频加载抓取图像结果显示 、 保存卸载图像图像处理抓取成功与否YNcvCaptureFromFilecvCreateCameraCapturecvQueryFramecvShowImagecvSaveImagecvWriteFramecvReleaseImage图像处理算法抓取成功与否YN视频处理结束卸载视频视频处理结束cvReleaseCapture 图 OpenCV视频处理基本流程 如下 的示例代码是使用 OpenCV 从摄像 头或者视频文件捕获视频流数据,把它转化成灰度图像 后 对处理 结果 进行显示 和 保存。 从 这个实例我们可以 看出 :使用 南华大学计算机科学与技术学院毕业设计(论文) 13 OpenCV可以 很简单的实现对 视频数据 的 读取 操作和显示保存操作。 CvCapture* pCapture = NULL。 //定义 cvCapture 结构 pCapture = cvCreateCameraCapture(0)。 //从 摄像头获取视频流 //pCapture = cvCaptureFromFile(“D:\\”)。 //从 AVI 视频文件获取视频流 IplImage* colorImg = NULL。 //定义 IplImage 型变量 IplImage* grayImg = NULL。 CvVideoWriter* pVideoWriter = NULL。 int N = 0。 while(1) { N++。 colorImg = cvQueryFrame(pCapture)。 //抓取 一帧图像 if(N==1) pVideoWriter =cvCreateVideoWriter(, CV_FOURCC(39。 X39。 , 39。 V39。 , 39。 I39。 , 39。 D39。 ), 25,cvSize(colorImgwidth,colorImgheight))。 if (colorImg。基于模板匹配的目标跟踪技术研究与实现毕业设计论文(编辑修改稿)
相关推荐
基本操作: InitStack(amp。 S) 操作结果:构造一个空栈 S。 DestroyStack(amp。 S) 初始条件:栈 S已存在。 操作结果:栈 S被销毁。 ClearStack(amp。 S) 初始条件:栈 S已存在。 操作结果:将栈 S 清为空栈。 StackEmpty(S) 初始条件:栈 S已存在。 操作结果:若栈 S 为空栈,则返回 TRUE,否则 FALSE。
ED 的显色性优于钠灯,分辨人的状况更加清晰,较有优势。 LED 路灯的寿命: 使用寿命应立足于整个灯的寿命。 高压钠灯称标准寿命目前已超过 2 万小时,实际应用 3 年左右,节能型电感镇流器不会低于 20 度,灯具也是如此。 LED 路灯标称使用寿命是 5 万 小时以上,这是芯片的理想寿命,芯片的封装、灯具散热等因素都有可能光衰减,还有驱动电路(以电子元器件为主)的寿命显然也不能达到 5
数整定方便、结构改变灵活、适应性强、鲁棒性强等特点,在工业控制上应用较广。 早期的 PID 控制是由气动或液动、电动硬件仪表实现的模拟 PID 控制器。 二十世纪七十年代以来,随着计算机技术飞速发展和应用普及,由计算机实现的数字 PID 控制不仅简单地将PID控制规律数字化,而且可以进一步利用计算机的逻辑判断功能,开发出多种不同形式的 PID 控制算法,使得 PID 控制的功能和实用性更强
氛,以及发现和删除非法帖子后能够及时做出后期处理。 1) 实名认证的校园 BBS 框架图: 图 32 实名认证系统框架图 2) 各模块的功能如下 : 以下主要说明用户注册登陆模块、帖子发布与删除模块,其中在用户的注册和文章的删除过程中,体现了本系统实名认证的特点,即用户在注册过程中必须填写个人真实姓名,且必须有效;在帖子删除过程中,用户无法删除个人所发布的帖子,管理员在删除帖子后
以用一个圆锥空间模型来描述,此圆锥模型 比较复杂,但确能把色调、亮度及饱和度的变化情形表现得很清楚。 由于人的视觉对亮度的敏感程度远强于对颜色浓淡的敏感程度,采用 HSI色彩空间比 RGB 空间更符合人的视觉特性,也更便于色彩处理和识别。 在图像处理和计算机视觉中大量算法都可在 HSI 色彩空间中方便地使用,它们可以分开处理而且是相互独立的。 因此,在 HSI
蚂蚁无序地寻找解,但是经过一段时间的算法演化,蚂蚁越来越倾向于寻找那些 接近 于最优解的一部分解,这就 体现了蚂蚁行为从无序到有序的自组织性。 自组织性 增强了算法的鲁棒性。 4)正反馈 反馈是控制论中的重要概念,它代表信息输入对输出的反作。 由自然界中真实蚂蚁的觅食行为可见,蚂蚁之所以能够 找到最优 路径,直接依赖于 信息素不断地在 最短路径上 累积,而信息素的累 积就 是一个正反馈的过程。