前言

前言

OpenCV(Open source Computer Vision)是一个开源程序库,包含了500多个用于图像和视频分析的优化算法。该程序库建立于1999年,现在在计算机视觉领域的研发人员社区中非常流行,被用作主要开发工具。OpenCV最初由英特尔公司的Gary Bradski带领一个小组开发,其目的是推动计算机视觉的研究,促进基于大量视觉处理、CPU密集型应用程序的开发。在一系列beta版本后,1.0版于2006年发布。第二个重要版本是2009年发布的OpenCV 2,它做了一些重要改动,特别是本书所用的新C++接口。OpenCV于2012年改组为一个非营利基金会(http://opencv.org/),依靠众筹进行后续开发。

本书这一版对旧版本中的所有编程方法重新审核和更新,还增加了很多新内容以更全面地覆盖程序库的主要功能点。本书介绍了程序库的很多功能,并且讲述如何使用这些功能完成特定的任务,这样做的目的并不是详细罗列OpenCV中的所有函数和类,而是为读者提供从零起步开发应用的方法。本书还探讨了图像分析的基本概念,介绍了计算机视觉的一些重要算法。

本书将带你进入图像和视频分析的世界,但这只是个开始,因为OpenCV还在不断地演变和扩展。你可以访问OpenCV的在线文档(http://opencv.org/)获得最新资料,也可以访问本书作者的个人网站www.laganiere.name了解有关本书的最新信息。

内容速览

第1章介绍OpenCV库,并演示如何构建一个可以读取并显示图像的简单应用,同时介绍基本的OpenCV数据结构。

第2章解释读取图像的过程,描述了扫描图像的不同方法,让你能在每一个像素上执行操作。

第3章涵盖了各种面向对象设计模式的使用案例,这些设计模式能帮助你更好地构建计算机视觉程序。这一章也讨论了图像中有关颜色的概念。

第4章展示如何计算图像的直方图,以及如何用直方图修改图像。这一章介绍了基于直方图的各种应用,包括图像分割、目标检测和图像检索。

第5章探讨数学形态学的概念,展示不同的算子,并解释如何用这些算子检测图像中的边界、角点和区段。

第6章讲解频率分析和图像滤波的原理,介绍低通滤波器和高通滤波器在图像处理中的应用,而且介绍了导数算子的概念。

第7章重点介绍几何图像特征的检测方法,解释如何提取图像中的轮廓、直线和连通区域。

第8章介绍图像的几种特征点检测器。

第9章解释如何计算兴趣点描述子,并用其在图像之间匹配兴趣点。

第10章探讨同一场景中两个图像之间的投影关系,同时描述了摄像机校准的过程,且重新探讨匹配特征点的问题。

第11章提出一个读写视频序列和处理帧的框架,同时说明它怎样才能逐帧跟踪特征点,以及如何提取在摄像机前移动的前景物体。

阅读须知

本书基于OpenCV库的C++ API展开介绍,因此你需要有使用C++语言的经验。另外,你还需要有一个良好的C++开发环境以便运行和试用书中的例子;常用的开发环境有Microsoft Visual Studio和Qt。

读者对象

本书适合准备用OpenCV库开发计算机视觉应用的C++初学者,也适合想了解计算机视觉编程概念的专业软件开发人员参考阅读。本书可作为大学计算机视觉课程的学生用书,也是一本非常优秀的参考书,可供图像处理和计算机视觉方面的研究生和科研人员使用。

排版规范

本书使用不同的文本样式区分不同类型的内容,下面是一些样式示例和相关说明。

正文中的代码、用户输入等以这种格式显示:“cv::Matcreate方法内部封装了这个检查过程,用起来很方便。”

代码块的格式如下:

// 用Mat_模板操作图像
cv::Mat_<uchar> im2(image);
 im2(50,100)= 0; // 访问第50行、第100列处那个值

读者反馈

我们一贯欢迎读者的反馈意见。请告诉我们你对本书的看法——喜欢或不喜欢哪些内容。读者的反馈对于协助我们创作出真正对读者有所裨益的内容至关重要。

一般性的反馈意见,请直接发邮件到feedback@packtpub.com,并在邮件标题中注明书名。

如果你是某一方面的专家并愿意参与写作或合作著书,请访问www.packtpub.com/authors查看作者指南。

客户支持

现在你已经拥有了一本由Packt出版的书,为了让你的付出得到最大的回报,我们还为你提供了其他许多方面的服务,请注意以下信息。

下载代码

如果你是通过http://www.packtpub.com上的注册账户购买的图书,可以从该账户下载相应Packt图书的示例代码1。如果你是从其他地方购买的本书英文版,那么可以访问http://www.acktpub.com/support并注册,然后会通过邮件接收到文件。

1本书中文版的读者可免费注册iTuring.cn,至本书页面下载。——编者注

勘误

我们已经尽最大努力确保内容准确,但错误仍在所难免。如果你发现书中有错(文字或代码错误),请告诉我们,这可让其他读者免于困惑,也可帮助我们在后续版本中加以改进。发现错误后,请访问http://www.packtpub.com/submit-errata,选择对应的图书,点击链接errata submission form(提交勘误表2)登记错误详情。勘误通过核实后,你提交的错误信息会上传到网站或添加到该书已有的勘误表中。你可以在http://www.packtpub.com/support中通过书名查看已有的勘误表。

2中文版的勘误请注册iTuring.cn,至本书页面提交。——编者注

举报盗版

网络盗版是个老问题了。在Packt,我们非常重视版权和许可。如果你在网上见到对我们作品的任何形式的非法复制品,请将网址或网站名称及时告知我们,以便我们采取补救措施。

请将疑似盗版内容的链接发送到copyright@packtpub.com。

非常感谢你的帮助,这不仅将保护作者权益,也让我们有能力为大家提供有价值的内容。

疑难解答

如果你有关于本书的任何疑问,请通过questions@packtpub.com联系我们,我们会尽力解决。

目录

  • 版权声明
  • 译者序
  • 前言
  • 第 1 章 图像编程入门
  • 第 2 章 操作像素
  • 第 3 章 用类处理彩色图像
  • 第 4 章 用直方图统计像素
  • 第 5 章 用形态学运算变换图像
  • 第 6 章 图像滤波
  • 第 7 章 提取直线、轮廓和区域
  • 第 8 章 检测兴趣点
  • 第 9 章 描述和匹配兴趣点
  • 第 10 章 估算图像之间的投影关系
  • 第 11 章 处理视频序列