大家好,我是贾志刚,OpenCV学堂公众号的号主,从2009年开始搞图像处理到今天我已经十四年了。刚开始搞图像处理做的是生物数据分析与细胞分析,用的是工具跟SDK是ImageJ这个框架,多数算法都是我自己裸写,不依赖任何库。直到2014年的一天有个朋友跟我说你怎么不用OpenCV,我赶快查了一下OpenCV,发现还真有,真好用,从此我就放弃造轮子了,开启了使用OpenCV做图像开发的工作。
2020年以后我正式打算写一本OpenCV C++的开发书籍,原因主要是看到OpenCV多数书籍无法解决以下几个痛点(拉仇恨的):
当前图书市场上OpenCV相关的书籍多数都是大而全,对标的是OpenCV官方教程,多数OpenCV图书都是官方教程的翻版,把所有OpenCV模块都说了一遍,讲了一遭。但是没有重点,也没有把各个章节之间的关节打通。根据80/20的规则,学习OpenCV应该用80%的时间精力学习20%最常用的核心模块。
没有一本OpenCV书籍是从工程实践环节所需技能倒推相关知识点,从而提炼出OpenCV相关核心模块与核心知识点,帮助读者掌握核心模块与核心知识点,满足工程实践需求。其实OpenCV虽然模块很多,但是从事机器视觉与生物医疗的图像算法开发,掌握其常用的十个模块即可。
很多OpenCV书籍中讲述的案例已经远远脱离实际工程需求,有堆切案例之嫌,典型的就是打开一本OpenCV书籍就有一张讲人脸识别的或者相机矫正的,其实人脸识别这个场景其算法与模型跟SDK已经早就白菜化了,任何一个公司只要脑子没有进水,都不会再去开发,学习这种无效技能是浪费时间,无法体现自身价值。
另外一个就是相机矫正(注意:矫正跟标定不同),现在因为工业相机的质量不断提升,99%的场景下相机矫正本质就是伪命题,笔者从事机器视觉项目开发已经很多年了,落地很多项目包含顶级制造业工厂,到目前为止还没做过什么相机矫正。
OpenCV4跟深度学习紧密联系,其中OpenCV DNN支持深度学习模块部署推理,但是在实际应用中速度稍慢,这个工程痛点目前没有OpenCV书籍有提到跟讲解过。另外在实际找工作的过程中JD中往往要求OpenCV开发者会级别的深度学习模型训练,典型的就是YOLOv系列网络训练与部署,市场上没有OpenCV书籍讲述过相关内容。
正式落地项目与工程化的时候读者面临二次学习C++编程与OpenCV C++高级技能难题,无法成为一个真正合格的OpenCV开发者。
正是因为上述种种原因,虽然OpenCV书籍不少,真正懂得开发者需要什么样的OpenCV技能的OpenCV书籍还近乎绝迹,因此必须有个长期使用OpenCV在一线从事机器视觉跟生物医学分析的开发者站出来。
正所谓自反而缩,虽千万人,吾往也,十年蛰伏,笔耕三年、行以成文、投书机工社、幸蒙不弃、三易其稿、得以出版、初登书市、拔得头筹、方知天下开发者苦等此书久矣,评曰:得此书厚虽不及其它,然言之有物,实乃良心之作,作者闻之心有戚戚然……
新书已经成功荣登热销榜单第一
新书已经成功荣登热销榜单第一
第一部分 基础篇
第1章 OpenCV介绍与安装
1.1 OpenCV介绍
1.1.1 OpenCV历史
1.1.2 OpenCV模块与功能
1.1.3 OpenCV4里程碑
1.1. OpenCV应用现状和发展趋势
1.2 OpenCV源码项目
1.3 OpenCV4开发环境搭建
1.4 第一个OpenCV开发程序
1.5 图像加载与保存
1.5.1 加载图像
1.5.2 保存图像
1.6 加载视频
1.7 小结
第2章 Mat与像素操作
2.1 Mat对象
2.1.1什么是Mat对象
2.1.2 一切数据皆Mat
2.1.3 Mat类型与深度
2.1.4 Mat对象创建
2.2 像素访问
2.2.1遍历Mat中的像素数据
2.2.2像素算术运算
2.2.3位运算
2.2.4调整图像亮度与对比度
2.3 图像类型与通道
2.3.1图像类型
2.2.2图像通道
2.2.3通道操作
第3章 色彩空间
3.1 RGB色彩空间
3.2 HSV色彩空间
3.3 Lab色彩空间
3.4 色彩空间转换与应用
3.5 小结
第4章 图像直方图
4.1像素统计信息
4.2 直方图与绘制
4.3 直方图均衡化
4.4 直方图比较
4.5 直方图反向投影
4.6 小结
第二部分 进阶篇
第5章 卷积操作
5.1 卷积概念
5.2 卷积模糊
5.3 自定义滤波
5.4 梯度提取
5.5 边缘发现
5.6 噪声与去噪声
5.7 边缘保留滤波
5.8 锐化增强
5.9 小结
第6章 二值图像
6.1 图像阈值化操作
6.2 全局阈值分割
6.3 自适应阈值分割
6.4 去噪与二值化
6.5 小结
第7章 二值分析
7.1 二值图像分析概述
7.2 连通组件扫描
7.3 轮廓发现
7.4 轮廓测量
7.5 拟合与逼近
7.6 轮廓分析
7.7 直线检测
7.8 圆检测
7.9 最大内接圆与最小外接圆
7.10 轮廓匹配
7.11 最大轮廓与关键点编码
7.12 凸包检测
7.13 小结
第8章 形态学分析
8.1 图像形态学概述
8.2 腐蚀与膨胀
8.3 开闭操作
8.4 形态学梯度
8.5 顶帽与黑帽
8.6 击中击不中
8.7 结构元素
8.8 距离变换
8.9 分水岭变换
8.10 小结
第9章 特征提取
9.1 图像金字塔
9.1.1 高斯金字塔
9.1.2拉普拉斯金字塔
9.1.3 金字塔融合
9.2 Harris角点检测
9.3 shi-tomas角点检测
9.4 亚像素级别角点检测
9.5 HOG特征与使用
9.5.1. HOG特征描述
9.5.2 基于HOG特征的行人检测
9.6 ORB特征描述子
9.6.1. 关键点与描述子提取
9.6.2 描述子匹配
9.7 基于特征的对象检测
9.7.1. 单应性变换
9.7.2 对象检测
9.8 小结
第10章 视频分析
10.1 基于颜色的对象跟踪
10.2 视频背景分析
10.3 帧差法背景析
10.4 稀疏光流分析
10.5 稠密光流分析
10.6 均值迁移分析
10.7 小结
第11章 机器学习
11.1 KMeans
11.1.1 KMeans图像分割
11.1.2 KMeans 提取图像色卡
11.2 KNN分类
11.3 SVM分类
11.4 HOG+SVM自定义对象检测
11.5 小结
第三部分 高级与实战
第12章 深度神经网络
12.1 DNN概述
12.2 图像分类
12.3 对象检测
12.3.1 SSD对象检测
12.3.2 Faster-RCNN对象检测
12.3.3 YOLO对象检测
12.4 ENet图像分割
12.5 风格迁移
12.6 场景文字检测
12.7 人脸检测
12.8 小结
第13章YOLOv5自定义对象检测
13.1 YOLOv5下载与安装
13.2 预训练YOLOv5模型对象检测
13.3 自定义对象检测
13.3.1 OID数据集下载与制作
13.3.2 配置文件修改与训练
13.3.3 部署自定义对象检测模型
13.4小结
第14章 缺陷检测
14.1 简单背景下的缺陷检测
14.1.1 问题描述
14.1.2 二值分析
14.1.3 缺陷分析
14.2 复杂背景下的缺陷检测
14.2.1 频率域增强的缺陷检测
14.2.2 空间域增强的缺陷检测
14.2.3 小结
14.3 案例-刀片缺陷检测
14.4 基于深度学习的缺陷检测
14.4.1 基于分类的缺陷检测
14.4.2 基于UNet的缺陷检测
14.5 小结
第15章 OpenVINO加速支持
15.1 OpenVINO框架安装与环境配置
15.1.1 OpenVINO安装
15.1.2 配置C++开发支持
15.2 OpenVINO2022.x版SDK推理演示
15.2.1 推理SDK介绍
15.2.2 推理SDK演示
15.3 OpenVINO支持UNet部署
15.4 OpenVINO支持YOLOv5部署
15.5 小结
第16章CUDA加速支持
16.1 OpenCV CUDA版本编译
16.2 CUDA加速传统图像处理
16.2.1 Mat与UMat的相互转换
16.2.2 CUDA加速版本的视频背景分析
16.3 CUDA加速OpenCV DNN
16.4 小结
《OpenCV应用开发:入门、进阶与工程化实践》全书共计16个章节,重点聚焦OpenCV开发常用模块详解与工程化开发实践,提升OpenCV应用开发能力,助力读者成为OpenCV开发者,同时包含深度学习模型训练与部署加速等知识,帮助OpenCV开发者进一步拓展技能地图,满足工业项目落地所需技能提升。购买请点链接:
《OpenCV应用开发:入门、进阶与工程化实践》