首页 > 其他分享 >【博主新书】《OpenCV应用开发:入门、进阶与工程化实践》

【博主新书】《OpenCV应用开发:入门、进阶与工程化实践》

时间:2023-12-15 19:06:50浏览次数:36  
标签:Mat 对象 检测 图像 OpenCV 博主 工程化 小结

写作初心

OpenCV作为开源的计算机视觉框架已经有超过20年的发展历程,OpenCV4是OpenCV目前为止最重要的里程碑版本。OpenCV4不仅包含了传统图像处理、图像分析、特征提取等模块的各种主流算法算子,还包含了深度学习模型部署与加速支持模块,兼容支持多种硬件与操作系统。

OpenCV开发的应用场景与领域也十分广泛,包括机器视觉领域的缺陷检测、生物医学领域的图像处理、无人机领域的目标识别、巡检与搜飞、安防监控领域的预警监测、交通运输领域的各种识别与道路缺陷检查等等。

学习OpenCV系统化掌握OpenCV工程化技术,能落地实际项目是很多开发者迫切需要的,然而当前OpenCV相关的书籍虽多,但是真正做到有的放矢、聚焦工程化开发落地所需的核心技能系统化输出知识点的OpenCV书籍依然难觅踪迹。

笔者作为在工程一线从事OpenCV开发与视觉技术研究超过十年的资深开发者,深深感到有责任把自己过去十多年的OpenCV开发与工程落地经验系统化的分享给大家。本书聚焦与提炼了笔者在机器视觉、生物医药等行业使用OpenCV开发必须掌握的核心知识点与相关主要模块,合理化安排章节内容,帮助大家系统化掌握OpenCV应用开发从而实现项目应用工程化落地。


本书内容与特色

本书包括三大部分,对应着三个层次的OpenCV开发进阶:

(1)基础篇学习OpenCV基础知识,知道如何简单使用API函数;

(2)进阶篇学习OpenCV核心API、达到熟练掌握可以解决常见的计算机视觉问题;

(3)高级实战篇:综合运用OpenCV开发知识,解决实际问题。

第一部分针对初级读者

介绍什么是OpenCV、如何开始写第一行OpenCV代码,图像如何被OpenCV加载与显示、OpenCV基础API操作、Mat对象与像素操作。

第二部分针对中级读者

从图像卷积开始,认真学习OpenCV图像处理、特征提取、机器学习等核心模块相关知识点、穿插大量工程案例与代码实践、从图像卷积滤波到二值图像分析、图像特征提取、自定义对象检测、完整系统化的学习OpenCV传统图像处理的经典知识点与案例。真正做到扎实基础、构建中级水准,可以解决常见计算机视觉问题。

第三部分针对高级读者

这是本书的重点与难点,主要涉及传统OpenCV传统图像处理与分析实现缺陷检测的各种方法与案例详解、OpenCV深度神经网络模型推理与加速、YOLOv5定义对象检测、深度神经网络模型压缩与优化、模型转换与加速推理、OpenVINO、CUDA加速等模块与OpenCV结合使用等相关知识点。

通过对本书的学习,读者对OpenCV整个框架理解、相关模块的运用能力都达到一个新的高度、有能力基于OpenCV算法算子设计复杂的算法处理流程、通过OpenCV解决实际问题、结合深度学习模型部署加速技术,为公司落地项目,体现自身商业价值、帮助公司拓展OpenCV与计算机视觉在各个行业的应用市场。

书中全部源代码已经基于OpenCV4.8 + VS2017调试通过。

《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 小结

书中全部源代码已经基于OpenCV4.8 + VS2017调试通过。

《OpenCV应用开发:入门、进阶与工程化实践》

答疑与服务

全书共计16个章节,重点聚焦OpenCV开发常用模块详解与工程化开发实践,提升OpenCV应用开发能力,助力读者成为OpenCV开发者,同时包含深度学习模型训练与部署加速等知识,帮助OpenCV开发者进一步拓展技能地图,满足工业项目落地所需技能提升。

https://item.jd.com/10092255924058.html

标签:Mat,对象,检测,图像,OpenCV,博主,工程化,小结
From: https://blog.51cto.com/gloomyfish/8843531

相关文章

  • 使用OpenCV看视频
    importcv2#video=cv2.VideoCapture("rtsp://192.168.0.200:554/av0_0")video=cv2.VideoCapture("fire.mp4")#获取视频帧数frame_count=int(video.get(cv2.CAP_PROP_FRAME_COUNT))#获取fps,每秒传输帧数(Framespersecond)fps=int(round(video.get(c......
  • TSINGSEE青犀基于opencv的安全帽/反光衣/工作服AI检测算法自动识别及应用
    安全帽/反光衣/工作服自动识别检测算法可以通过opencv+yolo网络对现场画面中人员穿戴着装进行实时分析检测,判断人员是否穿着反光衣/安全帽。在应用场景中,安全帽/反光衣/工作服检测应用十分重要,通过对人员的规范着装进行实时监测与预警,可以降低安全隐患,提高安全性。Tips:OpenCV......
  • C++调用opencv和windows api完成桌面窗口截图——以梦幻西游为例
    目录程序简介程序/数据集下载代码环境、文件结构代码分析结果展示程序简介项目编写的C++程序,根据输入的字符串,遍历所有桌面窗口标题,查找包含该标题的窗口,对该桌面窗口进行截图,以梦幻西游为例输入:桌面窗口包含的字符串比如输入“梦幻”,程序就会截取桌面“梦幻西游”的窗口输......
  • 在OpenCV基于深度学习的超分辨率模型实践
    1.引言OpenCV是一个开源的计算机视觉库,拥有大量优秀的算法。基于最新的合并,OpenCV包含一个易于使用的接口,主要用于实现基于深度学习方法的超分辨率(SR)。该接口包含预先训练的模型,这些模型可以非常容易和有效地用于推理。在这篇文章中,我将解释它可以做什么,并逐步展示如何使用它。闲......
  • opencv cpp的安装
    搞了半天,可算弄好了. vsopencvcpp: https://blog.csdn.net/weixin_50918736/article/details/130176469?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-130176469-blog-127627204.235%5Ev39%5Epc_relevant_a......
  • Qt显示OpenCV的单通道图片
    一、概述Qt中显示OpenCV的图片。OpenCV中的Mat默认是3通道图片。但是其灰度图、二值图片会是8位单通道的。示例代码中记录了如何显示二、代码示例#include"ImageUtils.h"MatImageUtils::qImageToMat(QImageqImage){//QImage转Mat三通道图片QImageimage=......
  • opencv4.8+vs2019 运行出现一堆[INFO:XXX]信息
    前言Opencv+vs2019搭建成功运行后出现一堆INFO信息,虽说不影响程序运行但是会占据控制台窗口,覆盖正常调试输出出现时机:在每次需要显示图像时均会出现,如:namedWindow、imshow函数调用时。 一、现象分析这些不是错,是OpenCV在启动时加载GUI(图形用户界面)后端注册表的信息,显示的是......
  • JavaWeb - Day03 - Ajax、前端工程化、Element
    01.Ajax-介绍Ajax概念:AsynchronousJavaScriptAndXML,异步的JavaScript和XML。作用:数据交换:通过Ajax可以给服务器发送请求,并获取服务器响应的数据。异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术,如:搜索联想、用户名是否可用的校验等等......
  • 【Python】【OpenCV】检测直线和圆
     重新理解一下Canny方法:参数:image:输入的图像。threshold1:第一个阈值,用于检测边缘的强度梯度的下限。threshold2:第二个阈值,用于检测边缘的强度梯度的上限。apertureSize:Sobel算子的大小,可选值为3、5、7,默认值为3。L2gradient:一个布尔值,指示是否使用更精确的L2范数计算梯度......
  • 【Python】【OpenCV】凸轮廓和Douglas-Peucker算法
    针对遇到的各种复杂形状的主体,大多情况下,我们可以求得一个近似的多边形来简化视觉图像处理,因为多边形是由直线组成的,这样就可以准确的划分区域来便捷后续的操作。 cv2.arcLength()Method:参数:curve:要计算周长的轮廓,可以是一个矩形、圆形、多边形等封闭曲线。closed:一个布尔......