描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121253317
涵盖OpenCV2、OpenCV3双版本的核心编程技巧
附赠OpenCV2、OpenCV3双版本总计200余个配套示例程序源代码
OpenCV在计算机视觉领域扮演着重要的角色。作为一个基于开源发行的跨平台计算机视觉库,OpenCV实现了图像处理和计算机视觉方面的很多通用算法。本书以当前*版本的OpenCV*常用*核心的组件模块为索引,深入浅出地介绍了OpenCV2和OpenCV3中的强大功能、性能,以及新特性。书本配套的OpenCV2和OpenCV3双版本的示例代码包中,含有总计两百多个详细注释的程序源代码与思路说明。读者可以按图索骥,按技术方向进行快速上手和深入学习。
本书要求读者具有基础的C/C 知识,适合研究计算机视觉以及相关领域的在校学生和老师、初次接触OpenCV但有一定C/C 编程基础的研究人员,以及已有过OpenCV 1.0编程经验,想快速了解并上手OpenCV2、OpenCV3编程的计算机视觉领域的专业人员。本书也适合于图像处理、计算机视觉领域的业余爱好者、开源项目爱好者做为通向新版OpenCV的参考手册之用。
本书配套的【示例程序】、【.exe可执行文件】、【书内彩图】的下载链接可通过扫描本书封底或后勒口的二维码获取。
部分快速上手OpenCV 1
第1章邂逅OpenCV 3
1.1 OpenCV周边概念认知 4
1.1.1图像处理、计算机视觉与OpenCV 4
1.1.2 OpenCV概述 4
1.1.3起源及发展 5
1.1.4应用概述 6
1.2 OpenCV基本架构分析 7
1.3 OpenCV3带来了什么 11
1.3.1项目架构的改变 11
1.3.2将OpenCV2代码升级到OpenCV3报错时的一些策略 12
1.4 OpenCV的下载、安装与配置 14
1.4.1预准备:下载和安装集成开发环境 14
1.4.2步:下载和安装OpenCV SDK 15
1.4.3第二步:配置环境变量 16
1.4.4第三步:工程包含(include)目录的配置 17
1.4.5第四步:工程库(lib)目录的配置 21
1.4.6第五步:链接库的配置 22
1.4.7第六步:在Windows文件夹下加入OpenCV动态链接库 25
1.4.8第七步:终测试 26
1.4.9可能遇到的问题和解决方案 27
1.5 快速上手OpenCV图像处理 28
1.5.1个程序:图像显示 29
1.5.2第二个程序:图像腐蚀 30
1.5.3第三个程序:图像模糊 31
1.5.4第四个程序:canny边缘检测 32
1.6 OpenCV视频操作基础 34
1.6.1读取并播放视频 34
1.6.2调用摄像头采集图像 35
1.7 本章小结 38
第2章启程前的认知准备 39
2.1 OpenCV官方例程引导与赏析 40
2.1.1彩色目标跟踪:Camshift 41
2.1.2光流:optical flow 42
2.1.3点追踪:lkdemo 43
2.1.4人脸识别:objectDetection 43
2.1.5支持向量机引导 44
2.2 开源的魅力:编译OpenCV源代码 45
2.2.1下载安装CMake 45
2.2.2使用CMake生成OpenCV源代码工程的解决方案 46
2.2.3编译OpenCV源代码 50
2.3 “opencv.hpp”头文件认知 53
2.4 命名规范约定 54
2.5 argc与argv参数解惑 56
2.5.1初识main函数中的argc和argv 56
2.5.2 argc、argv的具体含义 57
2.5.3 Visual Studio中main函数的几种写法说明 58
2.5.4总结 59
2.6 格式输出函数printf()简析 59
2.6.1格式输出:printf()函数 59
2.6.2示例程序:printf函数的用法示例 60
2.7 智能显示当前使用的OpenCV版本 61
2.8 本章小结 61
第3章 HighGUI图形用户界面初步 63
3.1 图像的载入、显示和输出到文件 64
3.1.1 OpenCV的命名空间 64
3.1.2 Mat类简析 64
3.1.3图像的载入与显示概述 65
3.1.4图像的载入:imread()函数 65
3.1.5图像的显示:imshow()函数 66
3.1.6关于InputArray类型 67
3.1.7创建窗口:namedWindow()函数 67
3.1.8输出图像到文件:imwrite()函数 68
3.1.9综合示例程序:图像的载入、显示与输出 70
3.2 滑动条的创建和使用 73
3.2.1创建滑动条:createTrackbar()函数 73
3.2.2获取当前轨迹条的位置:getTrackbarPos()函数 76
3.3 鼠标操作 76
3.4 本章小结 80
第二部分初探core组件 83
第4章 OpenCV数据结构与基本绘图 85
4.1 基础图像容器Mat 86
4.1.1数字图像存储概述 86
4.1.2 Mat结构的使用 86
4.1.3像素值的存储方法 88
4.1.4显式创建Mat对象的七种方法 89
4.1.5 OpenCV中的格式化输出方法 91
4.
前 言
计算机视觉是一个近几年来日臻成熟的领域。随着运算性能强劲而又价格实惠的计算设备的不断问世,创建复杂的图像应用从未像今天这般容易。OpenCV在计算机视觉领域扮演着重要的角色,它是一个基于开源发行的跨平台计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法。自1999 年问世以来,OpenCV 已经被计算机视觉领域的学者和开发者视为工具,并成为了计算机视觉领域有力的研究工具之一。
OpenCV 初由Intel 的一个小组进行开发。在一系列的beta 版本后,OpenCV 1.0 正式版本终于在2006 年10 月19 日发布。2009 年10 月1 日,OpenCV 2.0 问世,它带来了全新的C 接口,将OpenCV的能力无限放大。在2.0 的时代,OpenCV 增加了全新的平台支持,包括iOS 和Andriod,通过CUDA 和OpenCL 实现了GPU 加速,为Python 和Java 用户提供了接口,基于Github 和Buildbot 构建了充满艺术感的持续集成的系统,所以才有
了被全世界的很多公司和学校所采用的稳定易用的OpenCV 2.4.x。2014 年8 月21 日,OpenCV 3.0 Alpha 发布,它带来了全新的项目架构的改变,宣告了计算机视觉新时代的来临。和其他大型项目一样,OpenCV3 抛弃了整体统一架构,使用内核 插件的架构形式,让自身主体更加稳定,而附加的库则可以更加灵活多变,以保持高速的发展与迭代。
本书源自于笔者在CSDN 上连载的名为“OpenCV 入门教程”的系列博客文章,自2014 年2 月24 日发表篇以来,得到了广大OpenCV 爱好者的广泛关注与支持,累计阅读量突破了40 多万人次。不少读者强烈希望将这些内容集结成书,并加入更多新的内容。于是,经过笔者半年的笔耕不辍,便有了现在这本书的诞生。
作为一本入门级的OpenCV 编程教材,本书以详细注释的程序代码为主线,以新版OpenCV 核心的core、HighGUI、improc 和feature2d 这4 个组件的相关函数、类和数据结构为出发点,详细讲解了学习新版本OpenCV 中会遇到了各种问题,并提供了详尽的实战代码作为参考。本书的写作初衷是让更多的使用者能熟练使用采用新版C 接口的OpenCV2 或OpenCV3,了解OpenCV2 和OpenCV3的诸多细节上的区别,以推动新版OpenCV 在世界范围内的普及。
本书的内容安排
本书分为4 个部分、11 个章节,现将内容梗概列举如下。
第1 章 邂逅OpenCV:介绍OpenCV 的周边概念,分析OpenCV 的基本架构,讲解OpenCV3 的新特性。本章重点讲解了OpenCV 的下载、安装与配置过程;在配置完成后,带领大家正式领略OpenCV 的魅力,讲解了4 个OpenCV 图像处理小程序,并指导大家学习如何使用OpenCV 操作视频和调用摄像头。
第2 章 启程前的认知准备:进行OpenCV 官方例程的引导学习与赏析,讲解如何编译OpenCV 的源代码,并引入了对一些周边概念的认知。
第3 章 HighGUI 图形用户界面初步:对图像的载入、显示和输出到文件进行详细地分析,讲解OpenCV 中滑动条的创建和使用,以及如何用鼠标进行交互操作。
第4 章 OpenCV 数据结构与基本绘图: 讲解OpenCV 中常用的数据结构以及基本的绘图操作。
第5 章 core 组件进阶:讲解core 模块的一些进阶知识点,如操作图像中的像素、图像混合、分离颜色通道、调节图像的对比度和亮度、进行离散傅里叶变换,以及输入输出XML 和YAML 文件。
第6 章 图像处理:学习各种利用OpenCV 进行图像处理的方法,包括属于线性滤波的方框滤波、均值滤波与高斯滤波,属于非线性滤波的中值滤波、双边滤波;两种基本形态学操作——膨胀与腐蚀;5 种高级形态学滤波操作——开运算、闭运算、形态学梯度、顶帽以及黑帽;此外,还有漫水填充算法、图像金字塔、图像缩放、阈值化。
第7 章 图像变换:讲解多种类型的图像变换方法。包括利用OpenCV 进行边缘检测所用到的canny 算子、sobel 算子,Laplace 算子以及scharr 滤波器;进行图像特征提取的霍夫线变换、霍夫圆变换,重映射和仿射变换以及直方图均衡化。
第8 章 图像轮廓与图像分割修复: 讲解如何查找轮廓并绘制轮廓,如何寻找物体的凸包,使用多边形来包围轮廓,以及计算一个图像的矩。此外还介绍了分水岭算法和图像修补操作的实现方法。
第9 章 直方图与匹配:讲解图像直方图相关的编程技巧,以及直方图对比、
反向投影和模板匹配技术。
第10 章 角点检测:讲解Harris 角点检测和Shi-Tomasi 角点检测,以及一种亚像素角点检测方法。
第11 章 特征检测与匹配:使用OpenCV2 讲解并实现了SURF、SIFT 和ORB特征检测方法,并在FLANN 特征匹配的基础上,进一步实现了利用Homography映射来找出已知物体。
适合阅读本书的读者
􀁹 研究计算机视觉以及相关领域的在校学生和老师
本书拥有详实的内容,注释详尽的代码,会是助你通过OpenCV 来研习计算机视觉理论、撰写论文、通过毕业设计、完成科研项目的得力工具。同时,本书适合作为大学计算机视觉课程的教学用书。
􀁹 初次接触OpenCV、有一定C/C 编程基础的研究人员
作为一本定位为快速入门新版OpenCV 标准的编程教程,本书需要的仅仅是一些简单的C/C 编程语言基础。如果你已经具备了这些基础,并对计算机视觉感兴趣,那么本书正是为你所准备的。
􀁹 已经有过OpenCV 1.0 编程经验,想快速了解并上手OpenCV2、OpenCV3编程的计算机视觉领域的专业人员如果你曾经使用过OpenCV 1.0,或者研读过OpenCV 1.0 时代的经典著作
《Learning OpenCV》,本书会让你倍感亲切。你会发现新版OpenCV 带了更多强大和便利的特性,让你事半功倍,如虎添翼。
􀁹 想拥有一本新版OpenCV 接口工具书的计算机视觉爱好者本书中将自OpenCV2 以来(包括OpenCV3)的常用类和函数进行了详细地讲解,并在附录中提供了“书本核心函数清单”以便检索。你会在书中快速查找到你需要用到的函数、数据结构和类的用法。
􀁹 想拥有海量的详细注释的OpenCV2、OpenCV3 示例程序代码的OpenCV 爱
好者
本书包含OpenCV2 版的95 个书本主线示例程序源代码、21 个附赠示例程序源代码,OpenCV3 版的95 个书本主线示例程序源代码。OpenCV2、OpenCV3 两版代码提供分开下载。这些程序代码都经过详细而有条理的注释,并提供可以独立运行的.exe文件供快速查看程序效果,方便查看和检索。你会在海量的示例程序中找到你需要的参考代码,从而加速你的研究和学习。
􀁹 图像处理、计算机视觉领域的业余爱好者
海阔凭鱼跃,天高任鸟飞,计算机视觉领域的宝库任你探索。
􀁹 开源项目爱好者
OpenCV 作为一个完全免费并开源代码开发的计算机视觉代码库,有总计上百万行的源代码供你研究学习,本书将是引导你学习它们的良师益友。
本书的示例程序说明
本书的示例程序初都在OpenCV 2.4.9(2014 年4 月15 日面世)版本下开发,书稿初版也是基于OpenCV 2.4.9 而写。在书稿写作和修订过程中,恰逢OpenCV 3.0 Alpha(2014 年8 月21 日)和OpenCV3 Beta(2014 年11 月11 日)的发布,所以本书在审校和修订过程中(2014 年12 月1 日),决定站在浪潮之巅,以OpenCV2 为主,加入OpenCV3 的诸多特性,让这本书可以同时胜任OpenCV2和OpenCV3 两个版本教材的角色。这也是为什么本书会有OpenCV2 和OpenCV3两个独立版本的示例程序的原因。两个版本、详细注释的100 多个示例程序源代码是本书的灵魂,现将示例程序的相关情况概括如下。
􀁹 本书包含OpenCV2 版的95 个书本主线示例程序源代码、21 个附赠示例程
序源代码,以及OpenCV3 版的95 个书本主线示例程序源代码。
􀁹 OpenCV2、OpenCV3 两版代码提供分开下载。
􀁹 OpenCV2 版的示例程序在Windows7 64 位旗舰版、Visual Stuido 2010 、OpenCV 2.4.9 的环境下开发与测试,理论上支持OpenCV2 系列的所有版本的编译运行。
􀁹 OpenCV3 版的示例程序在Windows7 64 位旗舰版、Visual Stuido 2010 、OpenCV 3.0 beta 的环境下开发与测试,理论上支持目前已经发布的OpenCV3 全版本。
􀁹 程序源代码都经过详细而有条理的注释。
􀁹 额外提供可以独立运行的.exe 文件供快速查看程序效果,并方便检索。
本书配套示例代码的下载方式有以下几种。
􀁹 扫描本书封面后勒口的二维码,得到下载地址。
􀁹 在作者博客(http://blog.csdn.net/poem_qianmo)中单击相应的书本维护博文里贴出的下载链接。
􀁹 在电子工业出版社的官方网站(http://www.phei.com.cn)中进行下载。
􀁹 直接用搜索引擎搜索“《OpenCV3 编程入门》书本配套源代码”,找到对应
的下载地址进行下载。
致谢
首先
前言
计算机视觉是一个近几年来日臻成熟的领域。随着运算性能强劲而又价格实惠的计算设备的不断问世,创建复杂的图像应用从未像今天这般容易。OpenCV在计算机视觉领域扮演着重要的角色,它是一个基于开源发行的跨平台计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法。自1999年问世以来,OpenCV已经被计算机视觉领域的学者和开发者视为工具,并成为了计算机视觉领域有力的研究工具之一。
OpenCV初由Intel的一个小组进行开发。在一系列的beta版本后,OpenCV 1.0正式版本终于在2006年10月19日发布。
2009年10月1日,OpenCV 2.0问世,它带来了全新的C 接口,将OpenCV的能力无限放大。在2.0的时代,OpenCV增加了全新的平台支持,包括iOS和Andriod,通过CUDA和OpenCL实现了GPU加速,为Python和Java用户提供了接口,基于Github和Buildbot构建了充满艺术感的持续集成的系统,所以才有了被全世界的很多公司和学校所采用的稳定易用的OpenCV 2.4.x。
2014年8月21日,OpenCV 3.0 Alpha发布,它带来了全新的项目架构的改变,宣告了计算机视觉新时代的来临。和其他大型项目一样,OpenCV3抛弃了整体统一架构,使用内核插件的架构形式,让自身主体更加稳定,而附加的库则可以更加灵活多变,以保持高速的发展与迭代。
本书源自于笔者在CSDN上连载的名为“OpenCV入门教程”的系列博客文章,自2014年2月24日发表篇以来,得到了广大OpenCV爱好者的广泛关注与支持,累计阅读量突破了40多万人次。不少读者强烈希望将这些内容集结成书,并加入更多新的内容。于是,经过笔者半年的笔耕不辍,便有了现在这本书的诞生。
作为一本入门级的OpenCV编程教材,本书以详细注释的程序代码为主线,以新版OpenCV核心的core、HighGUI、improc和feature2d这4个组件的相关函数、类和数据结构为出发点,详细讲解了学习新版本OpenCV中会遇到了各种问题,并提供了详尽的实战代码作为参考。本书的写作初衷是让更多的使用者能熟练使用采用新版C 接口的OpenCV2或OpenCV3,了解OpenCV2和OpenCV3的诸多细节上的区别,以推动新版OpenCV在世界范围内的普及。
本书的内容安排
本书分为4个部分、11个章节,现将内容梗概列举如下。
第1章 邂逅OpenCV:介绍OpenCV的周边概念,分析OpenCV的基本架构,讲解OpenCV3的新特性。本章重点讲解了OpenCV的下载、安装与配置过程;在配置完成后,带领大家正式领略OpenCV的魅力,讲解了4个OpenCV图像处理小程序,并指导大家学习如何使用OpenCV操作视频和调用摄像头。
第2章 启程前的认知准备:进行OpenCV官方例程的引导学习与赏析,讲解如何编译OpenCV的源代码,并引入了对一些周边概念的认知。
第3章 HighGUI图形用户界面初步:对图像的载入、显示和输出到文件进行详细地分析,讲解OpenCV中滑动条的创建和使用,以及如何用鼠标进行交互操作。
第4章 OpenCV数据结构与基本绘图: 讲解OpenCV中常用的数据结构以及基本的绘图操作。
第5章 core组件进阶:讲解core模块的一些进阶知识点,如操作图像中的像素、图像混合、分离颜色通道、调节图像的对比度和亮度、进行离散傅里叶变换,以及输入输出XML和YAML文件。
第6章 图像处理:学习各种利用OpenCV进行图像处理的方法,包括属于线性滤波的方框滤波、均值滤波与高斯滤波,属于非线性滤波的中值滤波、双边滤波;两种基本形态学操作——膨胀与腐蚀;5种高级形态学滤波操作——开运算、闭运算、形态学梯度、顶帽以及黑帽;此外,还有漫水填充算法、图像金字塔、图像缩放、阈值化。
第7章 图像变换:讲解多种类型的图像变换方法。包括利用OpenCV进行边缘检测所用到的canny算子、sobel算子,Laplace算子以及scharr滤波器;进行图像特征提取的霍夫线变换、霍夫圆变换,重映射和仿射变换以及直方图均衡化。
第8章 图像轮廓与图像分割修复: 讲解如何查找轮廓并绘制轮廓,如何寻找物体的凸包,使用多边形来包围轮廓,以及计算一个图像的矩。此外还介绍了分水岭算法和图像修补操作的实现方法。
第9章 直方图与匹配:讲解图像直方图相关的编程技巧,以及直方图对比、反向投影和模板匹配技术。
第10章角点检测:讲解Harris角点检测和Shi-Tomasi角点检测,以及一种亚像素角点检测方法。
第11章 特征检测与匹配:使用OpenCV2讲解并实现了SURF、SIFT和ORB特征检测方法,并在FLANN特征匹配的基础上,进一步实现了利用Homography映射来找出已知物体。
适合阅读本书的读者
研究计算机视觉以及相关领域的在校学生和老师
本书拥有详实的内容,注释详尽的代码,会是助你通过OpenCV来研习计算机视觉理论、撰写论文、通过毕业设计、完成科研项目的得力工具。同时,本书适合作为大学计算机视觉课程的教学用书。
初次接触OpenCV、有一定C/C 编程基础的研究人员
作为一本定位为快速入门新版OpenCV标准的编程教程,本书需要的仅仅是一些简单的C/C 编程语言基础。如果你已经具备了这些基础,并对计算机视觉感兴趣,那么本书正是为你所准备的。
已经有过OpenCV1.0编程经验,想快速了解并上手OpenCV2、OpenCV3编程的计算机视觉领域的专业人员
如果你曾经使用过OpenCV1.0,或者研读过OpenCV1.0时代的经典著作《Learning OpenCV》,本书会让你倍感亲切。你会发现新版OpenCV带了更多强大和便利的特性,让你事半功倍,如虎添翼。
想拥有一本新版OpenCV接口工具书的计算机视觉爱好者
本书中将自OpenCV2以来(包括OpenCV3)的常用类和函数进行了详细地讲解,并在附录中提供了“书本核心函数清单”以便检索。你会在书中快速查找到你需要用到的函数、数据结构和类的用法。
想拥有海量的详细注释的OpenCV2、OpenCV3示例程序代码的OpenCV爱好者
本书包含OpenCV2版的95个书本主线示例程序源代码、21个附赠示例程序源代码,OpenCV3版的95个书本主线示例程序源代码。OpenCV2、OpenCV3两版代码提供分开下载。这些程序代码都经过详细而有条理的注释,并提供可以独立运行的.exe文件供快速查看程序效果,方便查看和检索。你会在海量的示例程序中找到你需要的参考代码,从而加速你的研究和学习。
图像处理、计算机视觉领域的业余爱好者
海阔凭鱼跃,天高任鸟飞,计算机视觉领域的宝库任你探索。
开源项目爱好者
OpenCV作为一个完全免费并开源代码开发的计算机视觉代码库,有总计上百万行的源代码供你研究学习,本书将是引导你学习它们的良师益友。
本书的示例程序说明
本书的示例程序初都在OpenCV2.4.9(2014年4月15日面世)版本下开发,书稿初版也是基于OpenCV2.4.9而写。在书稿写作和修订过程中,恰逢OpenCV3.0 Alpha(2014年8月21日)和OpenCV3 Beta(2014年11月11日)的发布,所以本书在审校和修订过程中(2014年12月1日),决定站在浪潮之巅,以OpenCV2为主,加入OpenCV3的诸多特性,让这本书可以同时胜任OpenCV2和OpenCV3两个版本教材的角色。这也是为什么本书会有OpenCV2和OpenCV3两个独立版本的示例程序的原因。
两个版本、详细注释的100多个示例程序源代码是本书的灵魂,现将示例程序的相关情况概括如下。
本书包含OpenCV2版的95个书本主线示例程序源代码、21个附赠示例程序源代码,以及OpenCV3版的95个书本主线示例程序源代码。
OpenCV2、OpenCV3两版代码提供分开下载。
OpenCV2版的示例程序在Windows7 64位旗舰版、Visual Stuido 2010 、OpenCV2.4.9的环境下开发与测试,理论上支持OpenCV2系列的所有版本的编译运行。
OpenCV3版的示例程序在Windows7 64位旗舰版、Visual Stuido 2010 、OpenCV3.0 beta的环境下开发与测试,理论上支持目前已经发布的OpenCV3全版本。
程序源代码都经过详细而有条理的注释。
额外提供可以独立运行的.exe文件供快速查看程序效果,并方便检索。
本书配套示例代码的下载方式有以下几种。
扫描本书
评论
还没有评论。