首页>参考读物>公共基础课>心理生活

OpenCV 3和Qt5计算机视觉应用开发
作者 : [伊朗]阿敏·艾哈迈迪·泰兹坎迪(Amin Ahmadi Tazehkandi) 著
译者 : 刘冰 郭坦 译
出版日期 : 2018-12-07
ISBN : 978-7-111-61470-8
定价 : 89.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 339
开本 : 16
原书名 : Computer Vision with OpenCV 3 and Qt5
原出版社: Packt Publishing Ltd.
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

全书共分为12章,全面系统地讲述了OpenCV3和Qt5的核心内容,包括:OpenCV和Qt介绍、创建OpenCV和Qt项目、Mat和QImage、图形视图框架、OpenCV中的图像处理、特征与描述符、多线程、视频分析、视频稳定性、调试与测试、链接与部署、Qt Quick应用程序等。为了便于学习与实践,本书提供了示例算法的编码实现。也向读者全面详尽地介绍了基于OpenCV和Qt进行图像处理、计算机视觉等编程的技术和方法。

图书特色

图书前言

QtQt
检测、自动驾驶汽车的行人检测,如此等等,计算机视觉都已经逐步用于解决这些以往需要人工介入才能解决的实时问题,这些都是OpenCV框架的应用场景。在过去的几年里,OpenCV已经逐步发展成为一个成熟、跨平台、专注于速度和性能的计算机视觉框架,世界各地的开发人员和研究人员都在使用OpenCV实现他们的计算机视觉应用的思想和算法。
本书的目的是帮助你掌握Qt和OpenCV框架,了解它们的基本概念,以便能够跨越各种平台轻松地继续独立开发和交付计算机视觉应用程序。为了能够更深入地理解本书所涉及的主题,需要你熟悉C++编程概念,例如类、模板、继承等。尽管全书介绍的教程、屏幕截图和示例都是基于Windows操作系统的,但在必要的时候也会提到在macOS以及Linux操作系统上的不同之处。
本书是作者努力数月的成果。如果没有Lawrence Veigas的完美编辑和Karl Phillip Buhr诚实而有见地的评论,没有Parth kothari,这一切都不可能完成;还要感谢Zainab Bootwala、Prajakta Naik、Aaron Lazar、Supriya Thabe、Tiksha Sarang、Rekha Nair、Jason Monteiro、Nilesh Mohite以及Packt出版公司所有人的帮助,使得这本书能够顺利完成,并能够送达世界各地的读者手中。
本书适合的读者
本书是为那些对创建计算机视觉应用程序感兴趣的读者准备的。如果你具备C++编程的中级知识,即使没有Qt5和OpenCV 3的知识,只要熟悉这些框架,也会获益匪浅。
本书包含的内容
第1章将介绍所有必需的初始工作。首先介绍从何处以及如何获得Qt和OpenCV框架,然后介绍如何安装、配置并确保在开发环境中对所有内容进行正确设置。
第2章将介绍Qt Creator IDE,我们将使用它开发所有应用程序。在该章中,你将学习如何创建并运行应用程序项目。
第3章将介绍创建一个完整应用程序所需的最常见功能,包括样式、国际化以及对各种语言、插件的支持等。通过该过程,我们将独立创建一个完整的计算机视觉应用程序。
第4章列出了编写计算机视觉应用程序所需的基本概念。你将了解OpenCV Mat类和Qt QImage类的所有内容,以及如何在两个框架之间转换和传递这些类等内容。
第5章将介绍如何使用Qt图形视图框架及其底层类,以便在应用程序中方便、有效地显示和操作图形。
第6章将介绍OpenCV框架提供的图像处理功能。你将学习图像变换、滤波、颜色空间、模板匹配等方面的知识。
第7章将介绍从图像中检测关键点和从关键点中提取描述符,以及使它们相互匹配。在该章中,你将学习各种关键点及描述符提取算法,以及如何使用这些内容来检测和定位图像中的已知对象。
第8章将介绍Qt框架提供的多线程功能,介绍互斥、读写锁、信号量和各种线程同步工具,还将介绍Qt中的低级(QThread)和高级(QtConcurrent)多线程技术。
第9章将介绍如何使用Qt和OpenCV框架处理视频。你将了解如何使用MeanShift和CAMShift算法以及其他视频处理功能实现目标跟踪。该章还将对视频处理的所有基本概念(如直方图和反投影图像)进行完整概述。
第10章将介绍Qt Creator IDE的调试功能及其相关配置和设置。你还可以通过编写单元测试示例来了解Qt框架的单元测试能力,这些单元测试示例可在每次构建项目时手动或自动运行。
第11章将介绍如何动态或静态地构建OpenCV和Qt框架。你将学习如何在各种平台上部署Qt和OpenCV应用程序。在该章的末尾,我们将使用Qt Installer 框架创建一个安装程序。
第12章将介绍Qt Quick应用程序和QML语言。你将学习QML语言语法,以及如何结合Qt Quick Designer创建美观的用于桌面和移动平台的Qt Quick应用程序。在该章中,还将学习如何集成QML和C++。
最佳配置
尽管在本书前几章介绍了所有必需的工具和软件、正确的版本及其安装与配置方法,但还是有必要提供一个快速参考列表:
安装了最新版本的Windows、macOS或Linux(如Ubuntu)操作系统的普通电脑
Microsoft Visual Studio(Windows)
Xcode(macOS)
CMake
Qt框架
OpenCV框架
通过上网搜索或者咨询当地的商店,可以了解目前电脑的通行配置与功能。然而,一台普通电脑已经足够开始你的学习之旅。
下载示例代码及彩色图像
本书的示例代码及所有截图和样图,可以从http://www.packtpub.com通过个人账号下载,也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载。

上架指导

计算机\人工智能

封底文字

长期以来,开发人员一直使用OpenCV库来开发计算机视觉应用程序。然而,他们现在需要一个更有效的工具,以便能够以更好、更现代的方式完成这项工作。Qt是目前可用于此任务的主要框架之一。本书将教会你组合使用OpenCV 3和Qt5来开发跨平台的计算机视觉应用程序。我们将首先介绍Qt及其IDE和SDK。然后,你将学习如何使用OpenCV API来集成这两种工具,以及如何配置Qt以使用OpenCV。随后,本书将引导你构建一个成熟的计算机视觉应用程序。之后,将使用Qt控件创建一个漂亮的UI应用程序,并在处理图像之后,将其有效地显示出来。在本书的末尾,你将学习如何把OpenCV Mat转换为Qt QImage,还将学习如何有效地处理图像,以便过滤、变换图像及检测或跟踪对象,并分析视频。最终,你将成为开发OpenCV应用程序的好手。
本书内容:
认识Qt IDE和SDK
认识OpenCV并了解如何在OpenCV和Qt之间通信
了解如何使用Qt控件创建UI
学习使用OpenCV 3和Qt5开发跨平台应用程序
探索Qt5的多线程应用程序开发功能
使用Qt5改进OpenCV 3应用程序开发
动态或静态地构建、测试和部署Qt和OpenCV应用程序
了解计算机视觉技术,比如图像滤波与变换、检测和匹配对象、模板匹配、对象跟踪、视频和运动分析等
认识可用于iOS和Android应用开发的QML和Qt Quick

译者序

OpenCV(Open Source Computer Vision Library)是一个完全免费的开源跨平台计算机视觉库,它实现了从最基本的滤波到更高级的目标检测等图像处理和计算机视觉方面的很多通用算法,可以在现有的Windows、Linux、Android和macOS等各种不同操作系统平台上运行。OpenCV是用C++语言编写的,虽然主要接口也是用C++语言编写的,但是依然保留了大量C语言接口。除此之外还有大量的Python、Java、C#和MATLAB/OCTAVE等语言接口,这些语言的应用程序接口函数可以通过在线文档获取。因此,OpenCV是计算机视觉领域的学者和开发者首选的工具,并成为计算机视觉领域最有力的研究工具之一。
Qt同样也是一款面向对象的跨平台C++图形用户界面应用程序开发框架,既可用于开发GUI程序,也可用于开发控制台工具和服务器之类的非GUI程序,易于扩展并允许真正的组件编程。它全面支持iOS、Android、Windows、Linux等操作系统,可以为应用程序开发者建立艺术级的图形用户界面提供所需的所有功能。同时,Qt Creator是一个用于Qt开发的轻量级跨平台集成开发环境,它简单易用且功能强大,包含了一套用于创建和测试基于Qt应用程序的高效工具。利用Qt Creator可以更加快速、轻松地完成Qt开发任务。
本书基于Qt和OpenCV搭建图像处理框架,用于计算机视觉、图像处理、模式识别和视频目标跟踪等领域。本书以常用类和函数的代码示例为主线,详细介绍了学习新版OpenCV和Qt中会遇到的各种问题及其相关解决方案。书中深入浅出地介绍了OpenCV 3和Qt5的强大功能、性能以及最新特性。根据书中提供的大量实用案例代码,读者可以快速熟悉和使用这两个开发框架。
全书共分为12章,全面系统地讲述了OpenCV 3和Qt5的核心内容,包括OpenCV和Qt介绍、创建OpenCV和Qt项目、Mat和QImage、图形视图框架、OpenCV中的图像处理、特征及其描述符、多线程、视频分析、调试与测试、链接与部署、Qt Quick应用程序等。为了便于学习与实践,本书提供了示例算法的编码实现,也向读者全面详尽地介绍了基于OpenCV和Qt进行图像处理、计算机视觉等编程的技术和方法。
本书结构紧凑,内容深入浅出,讲解以及编程实例图文并茂,易于读者理解、掌握。本书所针对的读者是从事计算机视觉和相关领域研究的科技人员、研发人员以及在工程实践中以OpenCV和Qt框架作为工具的工程师,还包括计算机、通信和自动化等相关专业的本科生、研究生,以及图像处理和计算机视觉领域的业余爱好者、开源项目爱好者。但是,对于初次接触OpenCV的人员来说,在学习本书内容之前,需要具备一定的C/C++编程基础。
本书的翻译工作是重庆邮电大学的刘冰老师在重庆大学攻读博士学位期间与重庆邮电大学教师郭坦共同合作完成的。为了能够更准确地翻译本书,译者查阅了很多中外文有关OpenCV和Qt框架、图像处理以及计算机视觉等内容的图书资料。本书从翻译到校对直至最终成稿历时4个多月的时间,限于译校者水平所限,译文中不当之处,恳请读者批评指正。
感谢机械工业出版社华章分社各位认真审校的编辑,是他们的严格要求,才使本书以较高质量出版。

刘冰、郭坦
liubing@cqupt.edu.cn

图书目录

译者序

前言
评阅者简介
第1章 OpenCV和Qt简介1
1.1 需要什么2
1.2 Qt介绍3
1.2.1 Qt基本模块3
1.2.2 Qt扩展4
1.2.3 附加值模块4
1.2.4 技术预览模块5
1.2.5 Qt支持的平台5
1.2.6 Qt Creator6
1.3 OpenCV介绍7
1.3.1 主模块8
1.3.2 附加模块8
1.4 安装Qt9
1.4.1 Qt安装准备9
1.4.2 在哪里获得Qt10
1.4.3 安装方法11
1.4.4 测试Qt安装14
1.5 安装OpenCV19
1.5.1 为构建OpenCV做准备19
1.5.2 在哪里获得OpenCV19
1.5.3 如何构建20
1.5.4 配置OpenCV安装23
1.5.5 测试OpenCV安装25
1.6 小结27
第2章 创建第一个Qt + OpenCV项目28
2.1 什么是Qt Creator29
2.2 IDE一览30
2.2.1 Qt Creator的模式30
2.2.2 Qt Creator的选项窗口58
2.3 小结61
第3章 创建完整的Qt + OpenCV项目62
3.1 后台63
3.1.1 qmake工具63
3.1.2 元对象编译器(moc)65
3.1.3 用户界面编译器(uic)66
3.2 设计模式67
3.3 Qt资源系统69
3.4 样式化应用程序73
3.4.1 选择器类型74
3.4.2 子控件75
3.4.3 伪状态75
3.4.4 级联75
3.5 多语言支持77
3.6 创建和使用插件81
3.6.1 接口82
3.6.2 插件84
3.6.3 插件加载器和用户88
3.7 创建基础94
3.8 小结96
第4章 Mat和QImage97
4.1 关于Mat类的所有内容98
4.1.1 构造函数、属性与方法100
4.1.2 Mat_<_Tp>类107
4.1.3 Matx<_Tp, m, n>107
4.1.4 UMat类108
4.1.5 InputArray、OutputArry、InputOutputArray108
4.2 利用OpenCV读取图像109
4.3 利用OpenCV写入图像110
4.4 OpenCV中的视频读写110
4.5 OpenCV中的HighGUI模块112
4.6 Qt中的图像和视频处理113
4.6.1 QImage类113
4.6.2 QPixmap类116
4.6.3 QImageReader与QImageWriter类119
4.6.4 QPainter类119
4.6.5 Qt中的相机和视频处理124
4.7 小结125
第5章 图形视图框架126
5.1 场景-视图-对象元素架构127
5.2 场景QGraphicsScene130
5.3 对象元素QGraphicsItem134
5.4 视图QGraphicsView142
5.5 小结152
第6章 基于OpenCV的图像处理153
6.1 图像滤波154
6.2 图像变换功能168
6.2.1 几何变换168
6.2.2 其他变换174
6.3 OpenCV绘图180
6.4 模板匹配183
6.5 小结185
第7章 特征及其描述符187
7.1 所有算法的基础—Algorithm类188
7.2 二维特征框架191
7.2.1 检测特征192
7.2.2 提取和匹配描述符204
7.3 如何选择算法211
7.3.1 精度212
7.3.2 速度212
7.3.3 资源利用率213
7.3.4 可用性213
7.4 小结213
第8章 多线程215
8.1 Qt中的多线程216
8.2 利用QThread实现低级多线程217
8.2.1 子类化QThread217
8.2.2 使用moveToThread函数222
8.3 线程同步工具224
8.3.1 互斥锁224
8.3.2 读写锁226
8.3.3 信号量228
8.3.4 等待条件228
8.4 基于QtConcurrent的高级多线程230
8.5 小结235
第9章 视频分析237
9.1 理解直方图238
9.2 理解反投影图像242
9.2.1 直方图比较250
9.2.2 直方图均衡化252
9.3 MeanShift算法和CamShift算法253
9.4 背景/前景检测260
9.5 小结263
第10章 调试与测试265
10.1 Qt Creator调试266
10.2 Qt测试框架271
10.2.1 创建单元测试272
10.2.2 数据驱动的测试276
10.2.3 基准测试278
10.2.4 GUI 测试278
10.2.5 测试用例项目281
10.3 小结283
第11章 链接和部署285
11.1 后台构建过程286
11.1.1 预处理286
11.1.2 编译286
11.1.3 链接287
11.2 构建OpenCV静态库288
11.3 构建Qt静态库289
11.4 部署Qt + OpenCV应用程序295
11.4.1 使用静态链接部署295
11.4.2 使用动态链接部署297
11.4.3 Qt安装程序框架299
11.5 小结302
第12章 Qt Quick应用程序304
12.1 QML介绍305
12.2 QML中的用户交互和脚本310
12.3 Qt Quick Designer的使用312
12.4 Qt Quick应用程序的结构313
12.5 集成C++和QML代码318
12.6 Android和iOS上的Qt和OpenCV应用程序324
12.7 小结326

教学资源推荐
作者: 主编 李春华 贾楠
作者: (美)杰弗里 O. 贝内特(Jeffrey O.Bennett) 著 科罗拉多大学波尔得分校威廉 L. 布里格斯(William L.Briggs)科罗拉多大学丹佛分校马里奥 F. 特里奥拉(Mario F. Triola)达奇斯社区学院
作者: (美)卡萝尔·韦德 (Carole Wade),卡罗尔·塔维斯( Carol Tavris)著
参考读物推荐
作者: 朱强 张艳 董金伟 等著
作者: [美]巴里·费根鲍姆(Barry Feigenbaum) 著