本书是一本通过OpenCV 4来讲解算法的入门书。全书共分为4个部分,第一部分包括第1~3章,主要有OpenCVr入门知识、OpenCV 的图像读写模块和和辛苦core模块讲解;第二部分包括第4~7章,主要有头像处理imgproc模块、视频处理videoio模块和可视化highgui模块、视频分析video模块讲解;第三部分包括第8~10章,主要有2d特征框架feature2d模块、照片处理photo模块、目标检测objdetect模块讲解;第四部分包括第11~12章,包括有深度神经网络dnn模块和机器学习ml模块等众多内容讲解。
肖铃,硕士,现任南方海洋科学与工程广东省实验室工程师。2016年毕业于中国科学技术大学与中国科学院合肥物质科学研究院安徽光机所大气光学研究中心,曾就职于中兴通讯股份有限公司和珠海金山办公软件有限公司,长期从事图像处理、深度学习计算机视觉算法,以及基于TensorFlow Lite的AI模型部署研究。
第 1 章 OpenCV 快速入门
1.1 OpenCV 介绍
1.1.1 OpenCV 概述
1.1.2 OpenCV 的代码结构
1.1.3 OpenCV 4 的新特性
1.2 OpenCV 开发环境搭建
1.2.1 案例 1:Windows 动态库开发环境搭建
1.2.2 案例 2:Linux 动态库开发环境搭建
1.2.3 案例 3:Python 语言开发环境搭建
1.3 OpenCV 模块介绍
1.3.1 常用模块
1.3.2 扩展模块
1.4 OpenCV 源码编译
1.4.1 案例 4:OpenCV 编译
1.4.2 案例 5:OpenCV 裁剪编译
1.4.3 案例 6:扩展模块 opencv-contrib
1.5 进阶必备:OpenCV 入门参考
1.5.1 OpenCV 版本选择
1.5.2 如何学习 OpenCV
第 2 章 图像读/写模块 imgcodecs
2.1 模块导读
2.2 图像读/写操作
2.2.1 案例 7:图像读取
2.2.2 案例 8:图像保存
2.3 图像编/解码
2.3.1 案例 9:图像编码应用
2.3.2 案例 10:图像解码应用
2.4 进阶必备:聊聊图像格式
第 3 章 核心库模块 core
3.1 模块导读
3.2 基本数据结构
3.2.1 案例 11:Mat 数据结构介绍及 C++调用
3.2.2 案例 12:Python 中的 Mat 对象操作
3.2.3 案例 13:Point 结构
3.2.4 案例 14:Rect 结构
3.2.5 案例 15:Size 结构
3.3 矩阵运算
3.3.1 案例 16:四则运算
3.3.2 案例 17:位运算
3.3.3 案例 18:代数运算
3.3.4 案例 19:比较运算
3.3.5 案例 20:特征值与特征向量
3.3.6 案例 21:生成随机数矩阵
3.4 矩阵变换
3.4.1 案例 22:矩阵转向量
3.4.2 案例 23:通道分离与通道合并
3.4.3 案例 24:图像旋转
3.4.4 案例 25:图像拼接
3.4.5 案例 26:图像边界拓展
3.4.6 案例 27:傅里叶变换
3.5 进阶必备:聊聊图像像素遍历与应用
3.5.1 案例 28:图像像素遍历
3.5.2 案例 29:提取拍照手写签名
第 4 章 图像处理模块 imgproc(一)
4.1 模块导读
4.2 案例 30:颜色空间变换
4.3 案例 31:图像尺寸变换
4.4 基本绘制
4.4.1 案例 32:绘制标记
4.4.2 案例 33:绘制直线
4.4.3 案例 34:绘制矩形
4.4.4 案例 35:绘制圆
4.4.5 案例 36:绘制椭圆
4.4.6 案例 37:绘制文字
4.5 形态学运算
4.5.1 案例 38:腐蚀
4.5.2 案例 39:膨胀
4.5.3 案例 40:其他形态学运算
4.6 图像滤波
4.6.1 案例 41:方框滤波
4.6.2 案例 42:均值滤波
4.6.3 案例 43:高斯滤波
4.6.4 案例 44:双边滤波
4.6.5 案例 45:中值滤波
4.7 边缘检测
4.7.1 案例 46:Sobel 边缘检测
4.7.2 案例 47:Scharr 边缘检测
4.7.3 案例 48:Laplacian 边缘检测
4.7.4 案例 49:Canny 边缘检测
4.8 进阶必备:聊聊颜色模型
第 5 章 图像处理模块 imgproc(二)
5.1 霍夫变换
5.1.1 案例 50:霍夫线变换
5.1.2 案例 51:霍夫圆变换
5.2 案例 52:仿射变换
5.3 案例 53:透视变换
5.4 案例 54:重映射
5.5 阈值化
5.5.1 案例 55:基本阈值化
5.5.2 案例 56:自适应阈值化
5.6 图像金字塔
5.6.1 案例 57:高斯金字塔
5.6.2 案例 58:拉普拉斯金字塔
5.7 直方图
5.7.1 案例 59:直方图计算
5.7.2 案例 60:直方图均衡化
5.8 传统图像分割
5.8.1 案例 61:分水岭算法
5.8.2 案例 62:GrabCut 算法
5.8.3 案例 63:漫水填充算法
5.9 角点检测
5.9.1 案例 64:Harris 角点检测
5.9.2 案例 65:Shi-Tomasi 角点检测
5.9.3 案例 66:亚像素角点检测
5.10 图像轮廓
5.10.1 案例 67:轮廓查找
5.10.2 案例 68:轮廓绘制
5.11 轮廓包裹
5.11.1 案例 69:矩形边框
5.11.2 案例 70:最小外接矩形
5.11.3 案例 71:最小外接圆
5.12 案例 72:多边形填充
5.13 图像拟合
5.13.1 案例 73:直线拟合
5.13.2 案例 74:椭圆拟合
5.13.3 案例 75:多边形拟合
5.14 案例 76:凸包检测
5.15 进阶必备:图像处理算法概述
第 6 章 可视化模块 highgui
6.1 模块导读
6.2 图像窗口
6.2.1 案例 77:创建与销毁窗口
6.2.2 案例 78:图像窗口操作
6.3 图像操作
6.3.1 案例 79:图像显示
6.3.2 案例 80:选取感兴趣区域
6.4 案例 81:键盘操作
6.5 案例 82:鼠标操作
6.6 案例 83:进度条操作
6.7 进阶必备:在 Qt 中使用 OpenCV
第 7 章 视频处理模块 videoio
7.1 模块导读
7.2 视频读取
7.2.1 案例 84:从文件读取视频
7.2.2 案例 85:从设备读取视频
7.3 视频保存
7.3.1 案例 86:从图片文件创建视频
7.3.2 案例 87:保存相机采集的视频
7.4 进阶必备:视频编/解码工具 FFMPEG
第 8 章 视频分析模块 video
8.1 运动分析
8.1.1 模块导读
8.1.2 案例 88:基于 MOG2 与 KNN 算法的运动分析
8.2 目标跟踪
8.2.1 模块导读
8.2.2 案例 89:基于 CamShift 算法的目标跟踪
8.2.3 案例 90:基于 meanShift 算法的目标跟踪
8.2.4 案例 91:稀疏光流法运动目标跟踪··.
8.2.5 案例 92:稠密光流法运动目标跟踪
8.3 进阶必备:深度学习光流算法
第 9 章 照片处理模块 photo
9.1 模块导读
9.2 案例 93:基于 OpenCV 的无缝克隆
9.3 案例 94:基于 OpenCV 的图像对比度保留脱色
9.4 案例 95:基于 OpenCV 的图像修复
9.5 案例 96:基于 OpenCV 的 HDR 成像
9.6 图像非真实感渲染
9.6.1 案例 97:边缘保留滤波
9.6.2 案例 98:图像细节增强
9.6.3 案例 99:铅笔素描
9.6.4 案例 100:风格化图像
9.7 进阶必备:照片处理算法概述
第 10 章 2D 特征模块 features2d
10.1 模块导读
10.2 特征点检测
10.2.1 案例 101:SIFT 特征点检测
10.2.2 案例 102:SURF 特征点检测
10.2.3 案例 103:BRISK 特征点检测
10.2.4 案例 104:ORB 特征点检测
10.2.5 案例 105:KAZE 特征点检测
10.2.6 案例 106:AKAZE 特征点检测
10.2.7 案例 107:AGAST 特征点检测
10.2.8 案例 108:FAST 特征点检测
10.3 特征点匹配
10.3.1 案例 109:Brute-Force 特征点匹配
10.3.2 案例 110:FLANN 特征点匹配
10.4 进阶必备:特征点检测算法概述
第 11 章 相机标定与三维重建模块 calib3d
11.1 模块导读
11.2 单应性变换
11.2.1 案例 111:单应性变换矩阵
11.2.2 案例 112:单应性应用之图像插入
11.3 相机标定
11.3.1 案例 113:棋盘角点检测并绘制
11.3.2 案例 114:消除图像失真
11.4 进阶必备:聊聊镜头失真
第 12 章 传统目标检测模块 objdetect
12.1 模块导读
12.2 级联分类器的应用
12.2.1 案例 115:人脸检测
12.2.2 案例 116:人眼检测
12.3 案例 117:HOG 描述符行人检测
12.4 二维码应用
12.4.1 案例 118:二维码检测
12.4.2 案例 119:二维码解码
12.5 进阶必备:聊聊条形码与二维码
第 13 章 机器学习模块 ml
13.1 模块导读
13.2 案例 120:基于 OpenCV 的Logistic回归
13.3 案例 121:基于 OpenCV 的支持向量机
13.4 案例 122:基于 OpenCV 的主成分分析
13.5 进阶必备:机器学习算法概述
第 14 章 深度学习模块 dnn
14.1 模块导读
14.2 风格迁移
14.2.1 深度学习风格迁移
14.2.2 案例 123:OpenCV 实现风格迁移推理
14.3 图像分类
14.3.1 深度学习图像分类
14.3.2 案例 124:基于 TensorFlow 训练
Fashion-MNIST 算法模型
14.3.3 案例 125:OpenCV 实现图像分类推理
14.4 目标检测
14.4.1 深度学习目标检测
14.4.2 案例 126:OpenCV 实现目标检测推理
14.5 图像超分
14.5.1 深度学习图像超分算法
14.5.2 案例 127:OpenCV 实现图像超分推理
14.6 进阶必备:OpenCV 与计算机视觉
14.6.1 计算机视觉的发展
14.6.2 OpenCV 在计算机视觉中的应用