OpenCV 4.5计算机视觉开发实战(基于VC++)
第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 屏幕分辨率 4
1.1.7 图像的灰度 4
1.1.8 灰度级 4
查看完整
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 屏幕分辨率 4
1.1.7 图像的灰度 4
1.1.8 灰度级 4
查看完整
朱文伟,名校计算机专业统招硕士,20年C\C 、Java开发经验。主导开发过密码、图形、人工智能等产品。精通Linux、Windows系统开发及数据库开发技术。著有图书《Windows C/C 加密解密实战》《密码学原理与Java实现》《Linux C与C 一线开发实践》《Visual C 2017从入门到精通》。
OpenCV是计算机视觉领域的开发者必须掌握的技术。本书针对 OpenCV 4.5进行编写,全面系统地介绍OpenCV 4.5的使用。书中重点介绍OpenCV 4.5相比之前的版本做出的重大修改。 本书共14章,主要内容包括OpenCV 4.5的基础知识、OpenCV开发环境搭建、OpenCV的模块架构、图像的读取与显示、核心模块CORE、图像处理模块基础、灰度变换和直方图修正、图像平滑、几何变换、图像分割、图像金字塔、图像形态学、图像边缘检测、视频加载与摄像头调用、摄像头视频录制以及OpenCV在机器学习方面的应用等,后给出一个停车场车牌识别系统的大案例。 本书适合计算机视觉与图像处理的开发人员、已有图像处理基础并想了解OpenCV 4.5新特性的开发人员阅读,也适合高等院校和培训机构计算机视觉与图像处理相关专业的师生作为教学参考书。
第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 屏幕分辨率 4
1.1.7 图像的灰度 4
1.1.8 灰度级 4
1.1.9 图像深度 5
1.1.10 二值图像 5
1.1.11 灰度图 5
1.1.12 彩色图像 6
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 数字图像处理常用的方法 10
1.3.4 图像处理的应用 13
1.4 图像信号处理层次 13
1.5 机器视觉 14
1.5.1 机器视觉的概念 14
1.5.2 机器视觉系统构成和分类 15
1.5.3 机器视觉的优势 15
1.5.4 机器视觉系统的应用 15
1.5.5 计算机视觉与相关学科的关系 15
1.6 OpenCV概述 16
第2章 搭建OpenCV开发环境 18
2.1 视觉图像编程的重要库 18
2.2 启动Visual C 2017 19
2.3 下载OpenCV 4.5 20
2.4 解压OpenCV 20
2.5 在程序中测试OpenCV 21
2.6 在VC中配置通用开发环境 23
2.7 数学函数 24
2.8 OpenCV架构 26
2.9 图像输入输出模块imgcodecs 27
2.9.1 imread读取图像文件 28
2.9.2 imwrite保存图片 30
2.10 OpenCV界面编程 32
2.11 单窗口显示多幅图像 34
2.12 销毁窗口 36
2.13 鼠标事件 39
2.14 键盘事件 42
2.15 滑动条事件 43
第3章 核心模块Core 46
3.1 矩阵操作 46
3.1.1 矩阵类Mat 46
3.1.2 构造法 48
3.1.3 直接赋值法 52
3.1.4 数组法 52
3.1.5 create函数法 53
3.1.6 定义特殊矩阵 53
3.1.7 得到矩阵的行数、列数和维数 54
3.1.8 矩阵的数据指针及其打印 55
3.1.9 创建新的矩阵头 57
3.1.10 得到矩阵通道数 58
3.1.11 复制矩阵 59
3.1.12 判断矩阵是否有元素 64
3.1.13 矩阵的5种遍历方式 64
3.1.14 设置矩阵新值 71
3.1.15 得到矩阵的元素总个数 71
3.1.16 矩形类Rect 72
3.2 数组的操作 73
3.3 XML和YAML文件读写 76
3.3.1 YAML文件简介 76
3.3.2 写入和读取YAML\XML文件的基本步骤 77
3.3.3 XML、YAML文件的打开 77
3.3.4 文本和数字的输入和输出 78
3.3.5 OpenCV数据结构的输入和输出 78
3.3.6 vector(arrays)和 maps的输入和输出 78
3.3.7 文件关闭 79
第4章 图像处理模块基础 85
4.1 颜色变换cvtColor 85
4.2 画基本图形 87
4.2.1 点的表示 87
4.2.2 画矩形 88
4.2.3 画圆 90
4.2.4 画椭圆 91
4.2.5 画线段 94
4.2.6 填充多边形 94
4.3 像素存放类Scalar 97
4.4 使用随机数 99
4.4.1 产生一个随机数 101
4.4.2 返回下一个随机数 102
4.4.3 用随机数填充矩阵 103
4.5 文字绘制 105
4.6 为图像添加边框 112
4.7 在图像中查找轮廓 116
第5章 灰度变换和直方图修正 122
5.1 点运算 122
5.1.1 基本概念 122
5.1.2 点运算的目标 122
5.1.3 点运算的分类 122
5.1.4 点运算的特点 123
5.1.5 点运算的应用 123
5.2 灰度变换 124
5.2.1 灰度变换概述 124
5.2.2 灰度变换的作用 125
5.2.3 灰度变换的方法 125
5.2.4 灰度化 125
5.2.5 对比度 128
5.2.6 灰度的线性变换 129
5.2.7 分段线性灰度变换 132
5.2.8 对数变换和反对数变换 138
5.2.9 幂律变换 143
5.3 直方图修正 145
5.3.1 直方图的概念 145
5.3.2 OpenCV实现灰度直方图 146
5.3.3 直方图均衡化 148
第6章 图像ping滑 154
6.1 ping滑处理算法 154
6.2 线性滤波 156
6.2.1 归一化方框滤波器 156
6.2.2 高斯滤波器 158
6.3 非线性滤波 161
6.3.1 中值滤波 161
6.3.2 双边滤波 162
第7章 几何变换 165
7.1 几何变换基础 165
7.2 图像ping移 168
7.3 图像旋转 171
7.4 仿射变换 175
7.5 图像缩放 179
7.5.1 缩放原理 179
7.5.2 OpenCV中的缩放 180
第8章 图像边缘检测 182
8.1 概述 182
8.2 边缘检测研究的历史现状 185
8.3 边缘定义及类型分析 186
8.4 梯度的概念 187
8.5 图像边缘检测的应用 187
8.6 目前边缘检测存在的问题 189
8.7 边缘检测的基本思想 190
8.8 图像边缘检测的步骤方法 190
8.9 经典图像边缘检测算法 191
8.9.1 差分边缘检测 192
8.9.2 Roberts算子 194
8.9.3 Sobel算子边缘检测 196
8.9.4 Prewitt算子边缘检测 199
8.9.5 LoG边缘检测算子 202
8.9.6 边缘检测的新技术与方法 206
第9章 图像分割 209
9.1 概述 209
9.2 图像分割的应用 211
9.3 图像分割的数学定义 212
9.4 图像分割方法的分类 212
9.4.1 基于阈值的分割方法 213
9.4.2 基于边缘的分割方法 214
9.4.3 基于区域的分割方法 215
9.4.4 基于神经网络的分割方法 216
9.4.5 基于聚类的分割方法 217
9.5 使用OpenCV进行图像分割 218
9.5.1 阈值分割 218
9.5.2 固定阈值分割 218
9.5.3 自适应阈值分割 222
9.6 彩色图像分割 228
9.7 grabCut算法分割图像 232
9.7.1 基本概念 232
9.7.2 grabCut函数 233
9.8 floodFill漫水填充分割 236
9.8.1 基本概念 236
9.8.2 floodFill函数 236
9.9 分水岭分割法 242
9.9.1 基本概念 242
9.9.2 wathershed函数 244
第10章 图像金字塔 253
10.1 基本概念 253
10.2 高斯金字塔 255
10.2.1 向下采样 255
10.2.2 向上采样 258
10.3 拉普拉斯金字塔 260
第11章 图像形态学 263
11.1 基本概念 263
11.2 形态学的应用 263
11.2.1 数学上的形态学 264
11.2.2 格 264
11.2.3 拓扑学 264
11.2.4 数学形态学的组成 265
11.2.5 数学形态学的应用 265
11.2.6 操作分类 266
11.3 结构元素 266
11.4 膨胀 266
11.5 腐蚀 267
11.6 开运算 269
11.7 闭运算 271
11.8 实现腐蚀和膨胀 273
11.9 开闭运算和顶帽黑帽 275
11.10 击中击不中 278
11.11 利用形态学运算提取水ping线和垂直线 282
第12章 视频处理 288
12.1 OpenCV视频处理架构 288
12.2 类VideoCapture 289
12.3 构造VideoCapture对象 289
12.4 判断打开视频是否成功 290
12.5 读取视频帧 290
12.6 播放视频文件 291
12.7 获取和设置视频属性 293
12.8 播放摄像头视频 296
12.9 录制视频类VideoWriter 297
12.9.1 构造VideoWriter对象 297
12.9.2 初始化或重新初始化 298
12.9.3 连接到FourCC代码 298
第13章 机器学习 302
13.1 机器学习概述 302
13.2 机器学习的发展历程 303
13.3 机器学习研究现状 304
13.3.1 传统机器学习的研究现状 305
13.3.2 大数据环境下机器学习的研究现状 306
13.4 机器学习的分类 307
13.4.1 基于学习策略的分类 307
13.4.2 基于学习方法的分类 307
13.4.3 基于学习方式的分类 308
13.4.4 基于数据形式的分类 308
13.4.5 基于学习目标的分类 308
13.5 机器学习常见的算法 308
13.6 机器学习的研究内容 310
13.7 机器学习的应用 311
13.8 OpenCV中的机器学习 312
13.8.1 支持向量机 313
13.8.2 贝叶斯分类器 317
第14章 案例:停车场车牌识别系统 320
14.1 车牌识别技术概述 320
14.2 车牌识别技术的宏观分析 321
14.2.1 国外技术分析 321
14.2.2 国内技术分析 323
14.2.3 车牌识别技术的技术难点 324
14.2.4 车牌识别系统的开发思路 324
14.3 车牌定位技术 325
14.3.1 车牌特征概述 325
14.3.2 车牌定位方法 326
14.3.3 车牌图像预处理 330
14.3.4 车牌图像的灰度化 330
14.3.5 车牌图像的直方图均衡化 332
14.3.6 车牌图像的滤波 333
14.3.7 车牌图像的二值化 335
14.3.8 车牌图像的边缘检测 335
14.3.9 车牌图像的灰度映射 336
14.3.10 车牌图像的改进型投影法定位 336
14.4 车牌字符分割技术 338
14.4.1 常用的车牌字符分割算法 338
14.4.2 车牌倾斜问题 340
14.4.3 车牌倾斜度的检测方法 340
14.4.4 车牌倾斜度校正方法 341
14.4.5 车牌边框和铆钉的去除 341
14.4.6 车牌字符分割 341
14.4.7 基于垂直投影和先验知识的车牌字符分割 342
14.4.8 粘连车牌字符的分割 343
14.4.9 断裂车牌字符的合并 344
14.4.10 对车牌字符的切分结果进行确认 344
14.5 车牌字符识别技术 345
14.5.1 模式识别 345
14.5.2 字符识别 346
14.5.3 汉字识别 347
14.6 系统设计 348
14.7 系统拓扑结构 348
14.8 停车场端的详细设计 349
14.9 办公室端的详细设计 358
^ 收 起
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 屏幕分辨率 4
1.1.7 图像的灰度 4
1.1.8 灰度级 4
1.1.9 图像深度 5
1.1.10 二值图像 5
1.1.11 灰度图 5
1.1.12 彩色图像 6
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 数字图像处理常用的方法 10
1.3.4 图像处理的应用 13
1.4 图像信号处理层次 13
1.5 机器视觉 14
1.5.1 机器视觉的概念 14
1.5.2 机器视觉系统构成和分类 15
1.5.3 机器视觉的优势 15
1.5.4 机器视觉系统的应用 15
1.5.5 计算机视觉与相关学科的关系 15
1.6 OpenCV概述 16
第2章 搭建OpenCV开发环境 18
2.1 视觉图像编程的重要库 18
2.2 启动Visual C 2017 19
2.3 下载OpenCV 4.5 20
2.4 解压OpenCV 20
2.5 在程序中测试OpenCV 21
2.6 在VC中配置通用开发环境 23
2.7 数学函数 24
2.8 OpenCV架构 26
2.9 图像输入输出模块imgcodecs 27
2.9.1 imread读取图像文件 28
2.9.2 imwrite保存图片 30
2.10 OpenCV界面编程 32
2.11 单窗口显示多幅图像 34
2.12 销毁窗口 36
2.13 鼠标事件 39
2.14 键盘事件 42
2.15 滑动条事件 43
第3章 核心模块Core 46
3.1 矩阵操作 46
3.1.1 矩阵类Mat 46
3.1.2 构造法 48
3.1.3 直接赋值法 52
3.1.4 数组法 52
3.1.5 create函数法 53
3.1.6 定义特殊矩阵 53
3.1.7 得到矩阵的行数、列数和维数 54
3.1.8 矩阵的数据指针及其打印 55
3.1.9 创建新的矩阵头 57
3.1.10 得到矩阵通道数 58
3.1.11 复制矩阵 59
3.1.12 判断矩阵是否有元素 64
3.1.13 矩阵的5种遍历方式 64
3.1.14 设置矩阵新值 71
3.1.15 得到矩阵的元素总个数 71
3.1.16 矩形类Rect 72
3.2 数组的操作 73
3.3 XML和YAML文件读写 76
3.3.1 YAML文件简介 76
3.3.2 写入和读取YAML\XML文件的基本步骤 77
3.3.3 XML、YAML文件的打开 77
3.3.4 文本和数字的输入和输出 78
3.3.5 OpenCV数据结构的输入和输出 78
3.3.6 vector(arrays)和 maps的输入和输出 78
3.3.7 文件关闭 79
第4章 图像处理模块基础 85
4.1 颜色变换cvtColor 85
4.2 画基本图形 87
4.2.1 点的表示 87
4.2.2 画矩形 88
4.2.3 画圆 90
4.2.4 画椭圆 91
4.2.5 画线段 94
4.2.6 填充多边形 94
4.3 像素存放类Scalar 97
4.4 使用随机数 99
4.4.1 产生一个随机数 101
4.4.2 返回下一个随机数 102
4.4.3 用随机数填充矩阵 103
4.5 文字绘制 105
4.6 为图像添加边框 112
4.7 在图像中查找轮廓 116
第5章 灰度变换和直方图修正 122
5.1 点运算 122
5.1.1 基本概念 122
5.1.2 点运算的目标 122
5.1.3 点运算的分类 122
5.1.4 点运算的特点 123
5.1.5 点运算的应用 123
5.2 灰度变换 124
5.2.1 灰度变换概述 124
5.2.2 灰度变换的作用 125
5.2.3 灰度变换的方法 125
5.2.4 灰度化 125
5.2.5 对比度 128
5.2.6 灰度的线性变换 129
5.2.7 分段线性灰度变换 132
5.2.8 对数变换和反对数变换 138
5.2.9 幂律变换 143
5.3 直方图修正 145
5.3.1 直方图的概念 145
5.3.2 OpenCV实现灰度直方图 146
5.3.3 直方图均衡化 148
第6章 图像ping滑 154
6.1 ping滑处理算法 154
6.2 线性滤波 156
6.2.1 归一化方框滤波器 156
6.2.2 高斯滤波器 158
6.3 非线性滤波 161
6.3.1 中值滤波 161
6.3.2 双边滤波 162
第7章 几何变换 165
7.1 几何变换基础 165
7.2 图像ping移 168
7.3 图像旋转 171
7.4 仿射变换 175
7.5 图像缩放 179
7.5.1 缩放原理 179
7.5.2 OpenCV中的缩放 180
第8章 图像边缘检测 182
8.1 概述 182
8.2 边缘检测研究的历史现状 185
8.3 边缘定义及类型分析 186
8.4 梯度的概念 187
8.5 图像边缘检测的应用 187
8.6 目前边缘检测存在的问题 189
8.7 边缘检测的基本思想 190
8.8 图像边缘检测的步骤方法 190
8.9 经典图像边缘检测算法 191
8.9.1 差分边缘检测 192
8.9.2 Roberts算子 194
8.9.3 Sobel算子边缘检测 196
8.9.4 Prewitt算子边缘检测 199
8.9.5 LoG边缘检测算子 202
8.9.6 边缘检测的新技术与方法 206
第9章 图像分割 209
9.1 概述 209
9.2 图像分割的应用 211
9.3 图像分割的数学定义 212
9.4 图像分割方法的分类 212
9.4.1 基于阈值的分割方法 213
9.4.2 基于边缘的分割方法 214
9.4.3 基于区域的分割方法 215
9.4.4 基于神经网络的分割方法 216
9.4.5 基于聚类的分割方法 217
9.5 使用OpenCV进行图像分割 218
9.5.1 阈值分割 218
9.5.2 固定阈值分割 218
9.5.3 自适应阈值分割 222
9.6 彩色图像分割 228
9.7 grabCut算法分割图像 232
9.7.1 基本概念 232
9.7.2 grabCut函数 233
9.8 floodFill漫水填充分割 236
9.8.1 基本概念 236
9.8.2 floodFill函数 236
9.9 分水岭分割法 242
9.9.1 基本概念 242
9.9.2 wathershed函数 244
第10章 图像金字塔 253
10.1 基本概念 253
10.2 高斯金字塔 255
10.2.1 向下采样 255
10.2.2 向上采样 258
10.3 拉普拉斯金字塔 260
第11章 图像形态学 263
11.1 基本概念 263
11.2 形态学的应用 263
11.2.1 数学上的形态学 264
11.2.2 格 264
11.2.3 拓扑学 264
11.2.4 数学形态学的组成 265
11.2.5 数学形态学的应用 265
11.2.6 操作分类 266
11.3 结构元素 266
11.4 膨胀 266
11.5 腐蚀 267
11.6 开运算 269
11.7 闭运算 271
11.8 实现腐蚀和膨胀 273
11.9 开闭运算和顶帽黑帽 275
11.10 击中击不中 278
11.11 利用形态学运算提取水ping线和垂直线 282
第12章 视频处理 288
12.1 OpenCV视频处理架构 288
12.2 类VideoCapture 289
12.3 构造VideoCapture对象 289
12.4 判断打开视频是否成功 290
12.5 读取视频帧 290
12.6 播放视频文件 291
12.7 获取和设置视频属性 293
12.8 播放摄像头视频 296
12.9 录制视频类VideoWriter 297
12.9.1 构造VideoWriter对象 297
12.9.2 初始化或重新初始化 298
12.9.3 连接到FourCC代码 298
第13章 机器学习 302
13.1 机器学习概述 302
13.2 机器学习的发展历程 303
13.3 机器学习研究现状 304
13.3.1 传统机器学习的研究现状 305
13.3.2 大数据环境下机器学习的研究现状 306
13.4 机器学习的分类 307
13.4.1 基于学习策略的分类 307
13.4.2 基于学习方法的分类 307
13.4.3 基于学习方式的分类 308
13.4.4 基于数据形式的分类 308
13.4.5 基于学习目标的分类 308
13.5 机器学习常见的算法 308
13.6 机器学习的研究内容 310
13.7 机器学习的应用 311
13.8 OpenCV中的机器学习 312
13.8.1 支持向量机 313
13.8.2 贝叶斯分类器 317
第14章 案例:停车场车牌识别系统 320
14.1 车牌识别技术概述 320
14.2 车牌识别技术的宏观分析 321
14.2.1 国外技术分析 321
14.2.2 国内技术分析 323
14.2.3 车牌识别技术的技术难点 324
14.2.4 车牌识别系统的开发思路 324
14.3 车牌定位技术 325
14.3.1 车牌特征概述 325
14.3.2 车牌定位方法 326
14.3.3 车牌图像预处理 330
14.3.4 车牌图像的灰度化 330
14.3.5 车牌图像的直方图均衡化 332
14.3.6 车牌图像的滤波 333
14.3.7 车牌图像的二值化 335
14.3.8 车牌图像的边缘检测 335
14.3.9 车牌图像的灰度映射 336
14.3.10 车牌图像的改进型投影法定位 336
14.4 车牌字符分割技术 338
14.4.1 常用的车牌字符分割算法 338
14.4.2 车牌倾斜问题 340
14.4.3 车牌倾斜度的检测方法 340
14.4.4 车牌倾斜度校正方法 341
14.4.5 车牌边框和铆钉的去除 341
14.4.6 车牌字符分割 341
14.4.7 基于垂直投影和先验知识的车牌字符分割 342
14.4.8 粘连车牌字符的分割 343
14.4.9 断裂车牌字符的合并 344
14.4.10 对车牌字符的切分结果进行确认 344
14.5 车牌字符识别技术 345
14.5.1 模式识别 345
14.5.2 字符识别 346
14.5.3 汉字识别 347
14.6 系统设计 348
14.7 系统拓扑结构 348
14.8 停车场端的详细设计 349
14.9 办公室端的详细设计 358
^ 收 起
朱文伟,名校计算机专业统招硕士,20年C\C 、Java开发经验。主导开发过密码、图形、人工智能等产品。精通Linux、Windows系统开发及数据库开发技术。著有图书《Windows C/C 加密解密实战》《密码学原理与Java实现》《Linux C与C 一线开发实践》《Visual C 2017从入门到精通》。
OpenCV是计算机视觉领域的开发者必须掌握的技术。本书针对 OpenCV 4.5进行编写,全面系统地介绍OpenCV 4.5的使用。书中重点介绍OpenCV 4.5相比之前的版本做出的重大修改。 本书共14章,主要内容包括OpenCV 4.5的基础知识、OpenCV开发环境搭建、OpenCV的模块架构、图像的读取与显示、核心模块CORE、图像处理模块基础、灰度变换和直方图修正、图像平滑、几何变换、图像分割、图像金字塔、图像形态学、图像边缘检测、视频加载与摄像头调用、摄像头视频录制以及OpenCV在机器学习方面的应用等,后给出一个停车场车牌识别系统的大案例。 本书适合计算机视觉与图像处理的开发人员、已有图像处理基础并想了解OpenCV 4.5新特性的开发人员阅读,也适合高等院校和培训机构计算机视觉与图像处理相关专业的师生作为教学参考书。
比价列表