OpenCV 教程 - 基础篇

OpenCV 教程封面
- 页数:433
- 配盘:光盘
- 定价:49 元
- 作者:刘瑞祯 于仕琪
- 书号:978-7-81124-035-1
- 出版日期:200706
- 开本:787×1092 1/16 开
- 字数:710 千字
内容简介
目前,OpenCV 逐步成为一个通用的基础研究和产品开发平台。本书是国内第一本全面介绍 OpenCV 的中文版图书,对 OpenCV 开放源代码计算机视觉库进行了详细讲解。OpenCV 由一系列 C 函数和 C++类构成,功能涵盖图像处理、计算机视觉和模式识别等领域。OpenCV 实现了大量通用算法,涉及到图像处理、结构分析、运动检测、摄像机定标、三维重建以及机器学习等方面,并有较高的运行效率。书中所有实例均提供了 C/C++语言的源代码。
本书附光盘 1 张,内容包括 OpenCV 1.0 分别在 Windows 和 Linux 下的安装程序,以及书中所有实例的源代码。本书可作为信息、图像处理和模式识别等领域的高年级本科生、研究生的教学用书,也可作为学生课题项目、科研项目以及公司产品开发的参考手册。
前言
OpenCV 这一名称包含了 Open 和 Computer Vision 两者的意思。实际上,Open 指 Open Source(开源,即开放源代码),Computer Vision 则指计算机视觉。OpenCV 的发展对软件的开发具有重要影响。
(1) 开放源代码 开放源代码(open source)是信息技术界从 20 世纪 80 年代开始兴起的新名词。源代码是由软件命令电脑执行指定动作的程序语句,是一个软件的核心所在。最着名的开放源代码软件,当属芬兰人林努斯•托尔瓦兹提出的 Linux。开放源代码软件之所以能够风靡世界,首先是其开源的免费特性;此外,由于有全球众多编程者的参与,开源软件一般具有简约精炼、资源占用少、功能集中和安全性好的特点。
从长远来讲,开放源代码或许是一种效率更高、效果更好的软件商业模式。这也是为什么很多商业软件巨头,开始逐步关注开源模式,并参与其中。因为开源,不仅仅使软件比较便宜,它更是一种转变,一种建造当代软件公司发展模式的运动。
(2) 计算机视觉
计算机视觉(computer vision)是在数字图像处理的基础上发展起来的新兴学科,它从信息处理的层次研究视觉信息的认知过程,研究视觉信息处理的计算理论和表达与计算方法,包括图像特征提取,摄像机定标,立体视觉,运动视觉(或称序列图像分析),由图像灰度恢复三维物体形状的方法,物体建模与识别方法以及距离图像分析方法等方面。作为一门综合性的交叉学科,计算机视觉处理的领域涉及到计算机科学与工程、信号处理、物理学、应用数学与统计学以及神经生理学与认知科学等方面,并在制造业、检验、文档分析、医疗诊断和军事等领域的各种智能/自主系统中有着广泛的应用。
(3) Intel 资助的开源项目 - OpenCV
或许人们奇怪,Intel 公司竟然会资助一个开源项目,这似乎不符合一个跨国公司追求商业利润最大化的做事风格。但是,OpenCV 确实是在 Intel 公司的鼎力资助下,才得到长足和有保障的发展。这是因为开源作为今后软件的发展模式,必将给现有的高技术企业带来巨大的潜在利益。目前,以 Linux 为代表的开放源代码软件得到了 HP,IBM,Sun,Intel 和 Novell 等世界上几乎所有大计算机软、硬件厂商的重视和支持,他们纷纷启动了开发和使用开放源代码软件的项目。因为开源已经日益成为一个不可阻挡的世界潮流,无论从软件开发本身还是技术趋势来看,开放的、有众多志愿者参与的开源项目,都会大大促进产品和技术的发展,并带来巨大的潜在商业价值。
OpenCV 作为开放的数字图像处理和计算机视觉软件平台,有以下特点:
- ① 开放 C 源码。
- ② 基于 Intel 处理器指令集开发的优化代码。
- ③ 统一的结构和功能定义。
- ④ 强大的图像和矩阵运算能力。
- ⑤ 方便灵活的用户接口。
- ⑥ 同时支持 MSWindows 和 Linux 平台。
作为一个基本的计算机视觉、图像处理和模式识别的开源项目,OpenCV 可以直接应用于很多领域,作为二次开发的理想工具。
本书的由来笔者从开始接触 OpenCV 到现在,已经有很长时间了。记得当时在中科院读博士时,主要使用 MATLAB 进行算法原型的设计和验证。为了开发演示系统,也为兴趣起见,一直在寻找一种好的、具有类似 MATLAB 功能的、在图像处理/计算机视觉/模式识别等领域中使用的 C/C++基础开发平台。从有名的卡耐基梅隆大学(CMU)的计算机视觉主页( http://www.cs.cmu.edu/~cil/vision.html ) 以及开源网站 sourceforg.net,到网络上曾经寻找过数不胜数的各种源代码开发包。当时试图把每一个可以下载的源代码都运行一遍,可谓是 上穷碧落下黄泉,两处茫茫皆不见 ,一直没有找到合适和满意的。究其原因不外乎是: 大量开发包都是由业馀爱好者自己编写的、凭兴趣或者自己开发的项目,其最大缺点是不规范,缺乏后续的开发和改进能力。直至找到 OpenCV,才有眼睛一亮的感觉。
第一次下载的 OpenCV 的版本是 Beta 2.1 版。那时感觉 OpenCV 能够吸引我的地方是,除了它具有必要的功能外,最主要的是它有一个 Yahoo Group,在上面有很多参与者,与众人一起讨论学习,可以不断提高自己、增长知识。后来逐步接触了 OpenCV 的各个升级版本,也陆续在上面做了不少开发。从几年前翻译 OpenCV 用户手册开始,到建立自己的第一个 OpenCV 方面的博客,笔者就一直有一种想法,希望能够在中国推广 OpenCV。为什么很多好的开源项目,都是在国外的土壤上发展壮大,而国内却非常少?几年的经历使我发现大致是因为国内的生存和竞争压力太大,自己又何尝不是如此呢!
最近一段时间,重新下定决心来写点东西,希望能够对 OpenCV 在国内的推广有所裨益,一些内容也会陆续放到博客上( http://blog.csdn.net/hunnish ),对于很多喜欢在网上看书的人,可以直接从博客下载相关内容。
本书的宗旨
本书力求做到: • 全面反映 OpenCV 最新版本的通用功能,淡化某些理论性较强的专用功能。 • 着力描绘各个函数的使用方法,简化函数用法的解释。 • 多举实例,以有利于不熟悉 C/C++语言和计算机视觉、数字图像处理的读者进行学习,寓教于例,由浅入深,使他们能够体会到 OpenCV 带来的成功快乐。 • 诚实面对读者,所有实例都经过编译运行。 • 为方便读者学习和使用,随书光盘包含了全书的所有源代码以及 VC6.0 的工程文件,读者可以直接编译运行。
本书以 OpenCV 入门为目的,希望抛砖引玉,为那些对 OpenCV 感兴趣以及刚刚开始接触 OpenCV 的人使用,以消除他们在接触一个新事物时所产生的陌生感。
本书没有深入讲解 OpenCV 中很多算法所涉及的理论知识,因为这些理论知识已经大大超出本书的范围,如果需要了解这些理论,最好的方法是查阅相关论文以及教科书。本书只是说明如何使用这些函数,因此,只力求使读者对 OpenCV 中的模式识别和图像处理等方面的函数,知其然而不必知其所以然。
全书的结构
全书分 6 章,另有附录 A~C,并提供光盘一张。其中,第 2 章的部分内容和第 6 章由于仕琪完成,其馀部分由刘瑞祯完成。
第 1 章概述了 OpenCV 及其实现的功能。
第 2~6 章的内容遵循 由浅入深 、 相对独立 和 算例引导 原则来安排。从全书整体看,概念相对简单的篇章安排在前;复杂的函数和概念安排在后,并尽量用实例来说明。为了节约篇幅,绝大部分实例采用命令行程序的形式提供,这样有助于读者避免图形界面程序的干扰,而直接了解 OpenCV 的内核。
第 2 章 OpenCV 入门专门介绍 OpenCV 最基本的使用方法,主要针对以前没有接触过 OpenCV 的读者。因此对程序的安装、配置、编译、运行、基本项目的创建以及基本函数库的构建给出了尽可能详细的解释。
第 3 章 OpenCV 基础系统阐明 OpenCV 的数据结构、函数使用方法、GUI 以及矩阵和图像的操作与显示,并详细讲解视频流在 OpenCV 中的操作方法。配合大量实例,读者可以通过本章的学习对 OpenCV 有一个全面而基本的认识。请读者千万不要轻视本章的内容,因为它快速而全面地介绍了 OpenCV,是今后开发和学习 OpenCV 的基础。
第 4 章数据结构与数据操作对 OpenCV 中涉及到的各类数据结构及其相应的操作方法做进一步说明。本章内容建立在 OpenCV 英文参考手册之上,所有的函数参数以及调用方式,都是根据 OpenCV V1.0 版本翻译编写的;在升级版本出来之后,有些函数的调用方式也许会发生相应改变,敬请读者注意
第 5 章模式识别与图像处理本章实际上是对 OpenCV 中涉及到模式识别与数字图像处理方面的函数做一个综合阐述,其主要部分也建立在 OpenCV 英文用户参考手册之上。本章涉及的很多函数需要大量的理论和专业背景知识作基础,因此对这些函数只是阐述了使用方法,并用适当实例来说明,而没有详细讨论算法的基本知识,因为这些知识已经大大超出了本书范围
第 6 章运动物体跟踪这是一个实际项目,说明如何利用 OpenCV 来实现运动物体的智能监控与跟踪。读者可以通过本章的学习对 OpenCV 有一个实际的开发体验。 附录 A~C 包括样例索引、附图索引以及函数索引,以方便读者查阅书中相关内容。
本书的读者对象和使用建议
本书可作为信息处理、计算机、机器人、人工智能、遥感图像处理和认知神经科学等相关专业的本科高年级学生或研究生的教学用书,也可供以上领域的产品开发人员和研究工作者参考。
本书内容的自封闭性、算例和完善的检索系统及随书光盘,使本书既能作为教材或自学用书,又能作为实践 OpenCV 的开发手段。计算机视觉自身具有的很强的综合性决定了本书有较大的知识跨度。其中最主要的两点是:第一,读者应该有良好的 C/C++编程基础,因为作为研究人员以及软硬件工程师,编程是必不可少的基本功;第二,书中涉及的相关模式识别和数字图像处理的相关内容,希望读者尽量结合相关教科书和参考书,从 知其然 开始,逐步过渡到 知其所以然 。作者在编写本书时,充分考虑了 OpenCV 的这种特点,也考虑了多方面读者的不同层次需要,配置了大量的样例程序,因此无论读者原来的知识背景如何,只要循着样例进行操作,就能直观地感受到其运行结果。
致谢
虽然本书从有想法到最终开始动手之间的时间很长,然而成书的时间却不到一个月。这当然要感谢很多曾经对本书做出贡献的人 - 樊臻涛、张红梅、魏育成、张兆翔、张艳秋、谭俊河和柳明等。他们的工作使本书很快完成。
另外,也要感谢北京航空航天大学出版社。感谢该社为本书所做的一切工作,也感谢赵延永老师、宋淑娟老师对作者编写本书所给予的鼓励、理解和支持。
在本书结稿的此时此刻,要感谢我的妻子李秀娟,她对我的事业和生活给予一如既往的支持,在回国的几年里,是她给予我生活和工作的信心。同时也衷心感谢我的父母和家人,当我因事业而到处奔波时,他们给我营造了一个温馨而平静的家庭港湾,让我能够义无反顾地追求自己的梦想。
时值 2006 年的圣诞之夜,此书也算是我奉献给大家的圣诞礼物吧。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!

发布评论