《OpenCV计算机视觉开发实践:基于Qt C++》

本书内容
OpenCV是计算机视觉领域的开发者必须掌握的技术。《OpenCV计算机视觉开发实践:基于Qt C++》基于 OpenCV 4.10与Qt C++ 进行编写,全面系统地介绍OpenCV的使用及实战案例,并配套提供全书示例源码、PPT课件与作者QQ答疑服务。
《OpenCV计算机视觉开发实践:基于Qt C++》共分19章,主要内容包括数字图像视觉概述、搭建OpenCV开发环境、核心模块Core、图像处理模块基础、灰度变换和直方图修正、图像平滑、几何变换、图像边缘检测、图像分割、图像金字塔、图像形态学、视频处理、机器学习、数字水印、图像加解密、物体计数、图像轮廓、手势识别以及停车场车牌识别系统等。
本书作者
朱文伟,名校计算机专业统招硕士,20多年C\C++、Java开发经验。主导开发过密码、图形、人工智能等产品。精通Linux、Windows系统开发及数据库开发技术。著有图书《OpenCV计算机视觉开发实践:基于Qt C++》《OpenCV计算机视觉开发实践:基于Python》《Linux C与C++一线开发实践(第2版)》《Rust编程与项目实战》《嵌入式Linux驱动开发实践》《高性能Linux网络编程核心技术揭秘》《Linux C/C++服务器开发实践》《Qt 6.x从入门到精通》《PyQt 5从入门到精通》《Linux C与C++ 一线开发实践》《Visual C++2017从入门到精通》《Windows C/C++加密解密实战》《密码学原理与Java实现》《OpenCV 4.5计算机视觉开发实战(基于VC++)》《OpenCV 4.5计算机视觉开发实战:基于Python》。
本书读者
《OpenCV计算机视觉开发实践:基于Qt C++》既适合OpenCV初学者 、计算机视觉与图像处理的开发人员、人工智能图像处理开发人员 阅读,也适合作为高等院校或者高职高专院校计算机视觉与图像处理相关专业的教材。
本书目录
第1章 数字图像视觉概述1
1.1 图像的基本概念1
1.1.1 图像和图形1
1.1.2 什么是数字图像1
1.1.3 数字图像的特点2
1.1.4 图像单位(像素)2
1.1.5 图像分辨率3
1.1.6 屏幕分辨率3
1.1.7 图像的灰度4
1.1.8 灰度级4
1.1.9 图像深度4
1.1.10 二值图像5
1.1.11 灰度图5
1.1.12 彩色图像5
1.1.13 通道6
1.1.14 图像存储6
1.2 图像噪声6
1.2.1 图像噪声的定义6
1.2.2 图像噪声的来源7
1.2.3 图像噪声的滤除7
1.3 图像处理8
1.3.1 图像处理的分类8
1.3.2 数字图像处理9
1.3.3 数字图像处理常用的方法9
1.3.4 图像处理的应用12
1.4 图像信号处理层次12
1.5 计算机视觉13
1.5.1 计算机视觉的概念13
1.5.2 计算机视觉系统的构成和分类14
1.5.3 机器视觉的优势14
1.5.4 机器视觉系统的应用14
1.5.5 计算机视觉与相关学科的关系15
1.6 OpenCV概述15
1.7 Qt简介17
第2章 搭建OpenCV开发环境19
2.1 Windows下搭建OpenCV开发环境19
2.1.1 下载和安装Qt19
2.1.2 下载和解压OpenCV26
2.1.3 了解构建工具27
2.1.4 下载和安装CMake28
2.1.5 生成Makefile文件30
2.1.6 开始编译OpenCV33
2.1.7 Qt开发的第一个OpenCV程序34
2.2 Linux下搭建OpenCV开发环境38
2.2.1 准备编译OpenCV所需依赖39
2.2.2 编译OpenCV源码40
2.2.3 Linux下的第一个OpenCV程序43
2.2.4 下载Qt46
2.2.5 安装依赖包46
2.2.6 安装Qt47
2.2.7 Linux下用Qt开发OpenCV51
2.2.8 做个快照54
2.3 数学函数55
2.4 OpenCV架构56
2.5 图像输入输出模块imgcodecs57
2.5.1 imread读取图像文件58
2.5.2 imwrite保存图片60
2.6 OpenCV界面编程62
2.6.1 新建窗口并显示62
2.6.2 单窗口显示多幅图像64
2.6.3 销毁窗口66
2.6.4 调整窗口大小68
2.6.5 鼠标事件69
2.6.6 键盘事件71
2.6.7 滑动条事件73
第3章 核心模块Core76
3.1 矩阵操作76
3.1.1 矩阵类Mat76
3.1.2 构造法78
3.1.3 直接赋值法82
3.1.4 数组法82
3.1.5 create函数法83
3.1.6 定义特殊矩阵83
3.1.7 得到矩阵的行数、列数和维数84
3.1.8 矩阵的数据指针及其打印85
3.1.9 创建新的矩阵头86
3.1.10 得到矩阵通道数88
3.1.11 复制矩阵88
3.1.12 判断矩阵是否有元素93
3.1.13 矩阵的5种遍历方式93
3.1.14 设置矩阵新值100
3.1.15 得到矩阵的元素总个数100
3.1.16 矩形类Rect100
3.2 数组的操作101
3.3 读写XML和YAML文件105
3.3.1 YAML文件简介105
3.3.2 写入和读取YAML\XML文件的基本步骤106
3.3.3 XML、YAML文件的打开106
3.3.4 文本和数字的输入和输出106
3.3.5 OpenCV数据结构的输入和输出106
3.3.6 vector(arrays)和maps的输入和输出107
3.3.7 文件关闭107
第4章 图像处理模块基础113
4.1 颜色变换cvtColor113
4.2 画基本图形115
4.2.1 点的表示115
4.2.2 画矩形116
4.2.3 画圆117
4.2.4 画椭圆119
4.2.5 画线段122
4.2.6 填充多边形122
4.3 像素存放类Scalar124
4.4 使用随机数126
4.4.1 产生一个随机数128
4.4.2 返回下一个随机数130
4.4.3 用随机数填充矩阵131
4.5 文字绘制132
4.6 为图像添加边框139
4.7 在图像中查找轮廓142
第5章 灰度变换和直方图修正149
5.1 点运算149
5.1.1 基本概念149
5.1.2 点运算的目标150
5.1.3 点运算的分类150
5.1.4 点运算的特点150
5.1.5 点运算的应用150
5.2 灰度变换151
5.2.1 灰度变换概述151
5.2.2 灰度变换的作用152
5.2.3 灰度变换的方法152
5.2.4 灰度化152
5.2.5 对比度155
5.2.6 灰度的线性变换155
5.2.7 分段线性灰度变换160
5.2.8 对数变换和反对数变换165
5.2.9 幂律变换170
5.3 直方图修正172
5.3.1 直方图的概念172
5.3.2 OpenCV实现灰度直方图173
5.3.3 直方图均衡化175
第6章 图像平滑181
6.1 平滑处理算法181
6.2 线性滤波183
6.2.1 归一化方框滤波器183
6.2.2 高斯滤波器185
6.3 非线性滤波188
6.3.1 中值滤波188
6.3.2 双边滤波189
第7章 几何变换193
7.1 几何变换基础193
7.2 图像平移196
7.3 图像旋转198
7.4 仿射变换204
7.5 图像缩放207
7.5.1 缩放原理207
7.5.2 OpenCV中的缩放209
第8章 图像边缘检测211
8.1 图像边缘检测概述211
8.2 边缘检测研究的历史现状213
8.3 边缘定义及类型分析214
8.4 梯度的概念216
8.5 图像边缘检测的应用216
8.6 目前边缘检测存在的问题217
8.7 边缘检测的基本思想218
8.8 图像边缘检测的步骤219
8.9 经典图像边缘检测算法220
8.9.1 差分边缘检测221
8.9.2 Roberts算子223
8.9.3 Sobel算子边缘检测225
8.9.4 Prewitt算子边缘检测227
8.9.5 LoG边缘检测算子230
8.9.6 边缘检测的新技术与方法235
第9章 图像分割238
9.1 图像分割概述238
9.2 图像分割的应用240
9.3 图像分割的数学定义240
9.4 图像分割方法的分类241
9.4.1 基于阈值化的分割方法242
9.4.2 基于边缘的分割方法243
9.4.3 基于区域的分割方法243
9.4.4 基于神经网络的分割方法245
9.4.5 基于聚类的分割方法246
9.5 使用OpenCV进行图像分割246
9.5.1 阈值分割246
9.5.2 固定阈值分割247
9.5.3 自适应阈值分割250
9.6 彩色图像分割256
9.7 grabCut算法分割图像259
9.7.1 基本概念259
9.7.2 grabCut函数260
9.8 floodFill(漫水填充)分割263
9.8.1 基本概念263
9.8.2 floodFill函数264
9.9 分水岭分割法270
9.9.1 基本概念270
9.9.2 wathershed函数271
第10章 图像金字塔279
10.1 图像金字塔概述279
10.2 高斯金字塔280
10.2.1 向下采样281
10.2.2 向上采样284
10.3 拉普拉斯金字塔286
第11章 图像形态学288
11.1 图像形态学概述288
11.2 形态学的应用288
11.2.1 数学上的形态学289
11.2.2 格289
11.2.3 拓扑学289
11.2.4 数学形态学的组成290
11.2.5 数学形态学的应用290
11.2.6 操作分类291
11.3 结构元素291
11.4 膨胀291
11.5 腐蚀292
11.6 开运算294
11.7 闭运算295
11.8 实现腐蚀和膨胀296
11.9 开闭运算和顶帽黑帽299
11.10 击中击不中302
11.11 利用形态学运算提取水平线和垂直线305
第12章 视频处理311
12.1 OpenCV视频处理架构311
12.2 类VideoCapture312
12.3 构造VideoCapture对象312
12.4 判断视频是否打开成功313
12.5 读取视频帧314
12.6 播放视频文件314
12.7 获取和设置视频属性316
12.8 播放摄像头视频319
12.9 录制视频类VideoWriter321
12.9.1 构造VideoWriter对象321
12.9.2 初始化或重新初始化322
12.9.3 连接一个fourcc代码322
12.10 实现一个视频播放器324
第13章 机器学习330
13.1 机器学习概述330
13.2 机器学习发展历程331
13.3 机器学习研究现状332
13.3.1 传统机器学习的研究现状333
13.3.2 大数据环境下机器学习的研究现状334
13.4 机器学习的分类334
13.4.1 基于学习策略的分类335
13.4.2 基于学习方法的分类335
13.4.3 基于学习方式的分类336
13.4.4 基于数据形式的分类336
13.4.5 基于学习目标的分类336
13.5 机器学习常见算法336
13.6 机器学习的研究内容338
13.7 机器学习的应用339
13.8 OpenCV中的机器学习340
13.8.1 支持向量机341
13.8.2 贝叶斯分类器345
第14章 数字水印348
14.1 数字水印概述348
14.1.1 数字水印的特点349
14.1.2 图像数字水印349
14.1.3 数字水印原理349
14.1.4 嵌入过程350
14.1.5 提取过程350
14.2 相关函数351
14.3 代码实现数字水印354
第15章 图像加密和解密357
15.1 图像加密和解密原理357
15.2 相关函数358
15.3 代码实现图像加解密359
第16章 物体计数361
16.1 物体计数基本原理361
16.2 在图像上绘制文字361
16.3 代码实现药片计数364
第17章 图像轮廓367
17.1 图像轮廓概述367
17.2 应用场景368
17.3 OpenCV中的轮廓函数368
17.3.1 查找轮廓findContours368
17.3.2 轮廓的基本属性369
17.3.3 绘制轮廓drawContours370
17.3.4 求轮廓面积contourArea370
17.4 实战轮廓函数371
17.5 实战黑白翻转373
第18章 手势识别375
18.1 手势识别概述375
18.2 凸包和凸包检测375
18.2.1 查找凸包的示例378
18.2.2 凸缺陷及其意义381
18.3 手势识别原理387
18.4 区分手势0和1390
18.5 区分手势2到5392
第19章 停车场车牌识别系统397
19.1 车牌识别技术概述397
19.2 车牌识别技术的宏观分析398
19.2.1 国外技术分析398
19.2.2 国内技术分析400
19.2.3 车牌识别技术的难点401
19.2.4 车牌识别系统的开发思路401
19.3 车牌定位技术402
19.3.1 车牌特征概述402
19.3.2 车牌定位方法403
19.3.3 车牌图像预处理407
19.3.4 车牌图像的灰度化407
19.3.5 车牌图像的直方图均衡化408
19.3.6 车牌图像的滤波410
19.3.7 车牌图像的二值化411
19.3.8 车牌图像的边缘检测411
19.3.9 车牌图像的灰度映射412
19.3.10 车牌图像的改进型投影法定位412
19.4 车牌字符分割技术414
19.4.1 常用车牌字符分割算法414
19.4.2 车牌倾斜问题416
19.4.3 车牌倾斜度检测方法416
19.4.4 车牌倾斜度校正方法417
19.4.5 车牌边框和铆钉的去除417
19.4.6 车牌字符分割417
19.4.7 基于垂直投影和先验知识的车牌字符分割418
19.4.8 粘连车牌字符的分割419
19.4.9 断裂车牌字符的合并420
19.4.10 对车牌字符的切分结果进行确认420
19.5 车牌字符识别技术421
19.5.1 模式识别421
19.5.2 字符识别422
19.5.3 汉字识别424
19.6 系统设计424
19.7 系统拓扑结构426
19.8 停车场端的详细设计426
19.9 办公室端的详细设计433
19.9.1 创建项目433
19.9.2 设计界面433
19.9.3 实现构造函数434
19.9.4 文件信息类MyFileInfo435
19.9.5 实现连接服务器函数436
19.9.6 关联按钮槽函数437
19.9.7 实现文件下载功能437
19.9.8 接收文件信息438
19.9.9 接收文件数据440
19.9.10 图像处理相关的成员变量441
19.9.11 实现打开文件441
19.9.12 实现图像二值化442
19.9.13 实现定位车牌444
19.9.14 实现分割字符447
19.9.15 实现识别结果452
19.9.16 运行程序455
本书特色
**(1)**基于Qt C++跨平台特性,需要Qt C++编程基础知识。
**(2)**基于Python 3.8和OpenCV 4.10版本编写,面向初学者,涵盖传统的图形图像算法与视频处理方法,并配以示例代码,内容丰富,行文通俗易懂。
**(3)**详解OpenCV 中的220多个函数,并给出100多个示例程序,以及车牌识别、目标检测、数字水印、图像加解密、物体计数、图像轮廓、手势识别等案例。
**(4)**配套示例源码、PPT课件、配图PDF文件与作者QQ一对一答疑服务。
本文摘自《OpenCV计算机视觉开发实践:基于Qt C++》,获出版社和作者授权发布。
OpenCV计算机视觉开发实践:基于Qt C++------jdhttps://item.jd.com/14417875.html