-
内容大纲
OpenCV是计算机视觉领域的开发者必须掌握的技术。本书基于OpenCV 4.10与Qt C++进行编写,全面系统地介绍OpenCV的使用及实战案例,并配套提供全书示例源码、PPT课件与作者QQ答疑服务。
本书共分19章,主要内容包括数字图像视觉概述、搭建OpenCV开发环境、核心模块Core、图像处理模块基础、灰度变换和直方图修正、图像平滑、几何变换、图像边缘检测、图像分割、图像金字塔、图像形态学、视频处理、机器学习、数字水印、图像加解密、物体计数、图像轮廓、手势识别以及停车场车牌识别系统等。
本书既适合OpenCV初学者、计算机视觉与图像处理的开发人员、人工智能图像处理开发人员阅读,也适合作为高等院校或者高职高专院校计算机视觉与图像处理相关专业的教材。 -
作者介绍
朱文伟,名校计算机专业统招硕士。拥有20年C/C++、Java开发经验,主导开发过密码、图形、人工智能等方面的产品。精通Linux、Windows系统开发及数据库开发技术。著有图书《LinuxC/C++服务器开发实践》《OpenCV4.5计算机视觉开发实战:基于Python》《OpenCV 4.5计算机视觉开发实战(基于VC++)》《Qt6.X从入门到精通》《Windows C/C++加密解密实战》《密码学原理与Java实现》《Linux C与C++ 一线开发实践》《VisualC++2017从入门到精通》。 -
目录
第1章 数字图像视觉概述
1.1 图像的基本概念
1.1.1 图像和图形
1.1.2 什么是数字图像
1.1.3 数字图像的特点
1.1.4 图像单位(像素)
1.1.5 图像分辨率
1.1.6 屏幕分辨率
1.1.7 图像的灰度
1.1.8 灰度级
1.1.9 图像深度
1.1.10 二值图像
1.1.11 灰度图
1.1.12 彩色图像
1.1.13 通道
1.1.14 图像存储
1.2 图像噪声
1.2.1 图像噪声的定义
1.2.2 图像噪声的来源
1.2.3 图像噪声的滤除
1.3 图像处理
1.3.1 图像处理的分类
1.3.2 数字图像处理
1.3.3 数字图像处理常用的方法
1.3.4 图像处理的应用
1.4 图像信号处理层次
1.5 计算机视觉
1.5.1 计算机视觉的概念
1.5.2 计算机视觉系统的构成和分类
1.5.3 机器视觉的优势
1.5.4 机器视觉系统的应用
1.5.5 计算机视觉与相关学科的关系
1.6 OpenCV概述
1.7 Qt简介
第2章 搭建OpenCV开发环境
2.1 Windows下搭建OpenCV开发环境
2.1.1 下载和安装Qt
2.1.2 下载和解压OpenCV
2.1.3 了解构建工具
2.1.4 下载和安装CMake
2.1.5 生成Makefile文件
2.1.6 开始编译OpenCV
2.1.7 Qt开发的第一个OpenCV程序
2.2 Linux下搭建OpenCV开发环境
2.2.1 准备编译OpenCV所需依赖
2.2.2 编译OpenCV源码
2.2.3 Linux下的第一个OpenCV程序
2.2.4 下载Qt
2.2.5 安装依赖包
2.2.6 安装Qt
2.2.7 Linux下用Qt开发OpenCV
2.2.8 做个快照
2.3 数学函数
2.4 OpenCV架构
2.5 图像输入输出模块imgcodecs
2.5.1 imread读取图像文件
2.5.2 imwrite保存图片
2.6 OpenCV界面编程
2.6.1 新建窗口并显示
2.6.2 单窗口显示多幅图像
2.6.3 销毁窗口
2.6.4 调整窗口大小
2.6.5 鼠标事件
2.6.6 键盘事件
2.6.7 滑动条事件
第3章 核心模块Core
3.1 矩阵操作
3.1.1 矩阵类Mat
3.1.2 构造法
3.1.3 直接赋值法
3.1.4 数组
3.1.5 create函数法
3.1.6 定义特殊矩阵
3.1.7 得到矩阵的行数、列数和维数
3.1.8 矩阵的数据指针及其打印
3.1.9 创建新的矩阵头
3.1.10 得到矩阵通道数
3.1.11 复制矩阵
3.1.12 判断矩阵是否有元素
3.1.13 矩阵的5种遍历方式
3.1.14 设置矩阵新值
3.1.15 得到矩阵的元素总个数
3.1.16 矩形类Rect
3.2 数组的操作
3.3 读写XML和YAML文件
3.3.1 YAML文件简介
3.3.2 写入和读取YAML/XML文件的基本步骤
3.3.3 XML、YAML文件的打开
3.3.4 文本和数字的输入和输出
3.3.5 OpenCV数据结构的输入和输出
3.3.6 vector(arrays)和maps的输入和输出
3.3.7 文件关闭
第4章 图像处理模块基础
4.1 颜色变换cvtColor
4.2 画基本图形
4.2.1 点的表示
4.2.2 画矩形
4.2.3 画圆
4.2.4 画椭圆
4.2.5 画线段
4.2.6 填充多边形
第5章 灰度变换和直方图修正
5.1 点运算
5.1.1 基本概念
5.1.2 点运算的目标
5.1.3 点运算的分类
5.1.4 点运算的特点
5.1.5 点运算的应用
5.2 灰度变换
5.2.1 灰度变换概述
5.2.2 灰度变换的作用
5.2.3 灰度变换的方法
5.2.4 灰度化
5.2.5 对比度
5.2.6 灰度的线性变换
5.2.7 分段线性灰度变换
5.2.8 对数变换和反对数变换
5.2.9 幂律变换
5.3 直方图修正
5.3.1 直方图的概念
5.3.2 OpenCV实现灰度直方图
5.3.3 直方图均衡化
第6章 图像平滑
6.1 平滑处理算法
6.2 线性滤波
6.2.1 归一化方框滤波器
6.2.2 高斯滤波器
6.3 非线性滤波
6.3.1 中值滤波
6.3.2 双边滤波
第7章 几何变换
7.1 几何变换基础
7.2 图像平移
7.3 图像旋转
7.4 仿射变换
7.5 图像缩放
7.5.1 缩放原理
7.5.2 OpenCV中的缩放
第8章 图像边缘检测
8.1 图像边缘检测概述
8.2 边缘检测研究的历史现状
8.3 边缘定义及类型分析
8.4 梯度的概念
8.5 图像边缘检测的应用
8.6 目前边缘检测存在的问题
8.7 边缘检测的基本思想
8.8 图像边缘检测的步骤
8.9 经典图像边缘检测算法
8.9.1 差分边缘检测
8.9.2 Roberts算子
8.9.3 Sobel算子边缘检测
8.9.4 Prewitt算子边缘检测
8.9.5 LoG边缘检测算子
8.9.6 边缘检测的新技术与方法
第9章 图像分割
9.1 图像分割概述
9.2 图像分割的应用
9.3 图像分割的数学定义
9.4 图像分割方法的分类
9.4.1 基于阈值化的分割方法
9.4.2 基于边缘的分割方法
9.4.3 基于区域的分割方法
9.4.4 基于神经网络的分割方法
9.4.5 基于聚类的分割方法
9.5 使用OpenCV进行图像分割
9.5.1 阈值分割
9.5.2 固定阈值分割
9.5.3 自适应阈值分割
9.6 彩色图像分割
9.7 grabCut算法分割图像
9.7.1 基本概念
9.7.2 grabCut函数
9.8 floodFill(漫水填充)分割
9.8.1 基本概念
9.8.2 floodFill函数
9.9 分水岭分割法
9.9.1 基本概念
9.9.2 watershed函数
第10章 图像金字塔
10.1 图像金字塔概述
10.2 高斯金字塔
10.2.1 向下采样
10.2.2 向上采样
10.3 拉普拉斯金字塔
第11章 图像形态学
11.1 图像形态学概述
11.2 形态学的应用
11.2.1 数学上的形态学
11.2.2 格
11.2.3 拓扑学
11.2.4 数学形态学的组成
11.2.5 数学形态学的应用
11.2.6 操作分类
11.3 结构元素
11.4 膨胀
11.5 腐蚀
11.6 开运算
11.7 闭运算
11.8 实现腐蚀和膨胀
11.9 开闭运算和顶帽黑帽
11.10 击中击不中
11.11 利用形态学运算提取水平线和垂直线
第12章 视频处理
12.1 OpenCV视频处理架构
12.2 类VideoCapture
12.3 构造VideoCapture对象
12.4 判断视频是否打开成功
12.5 读取视频帧
12.6 播放视频文件
12.7 获取和设置视频属性
12.8 播放摄像头视频
12.9 录制视频类VideoWriter
12.9.1 构造VideoWriter对象
12.9.2 初始化或重新初始化
12.9.3 连接一个fource代码
12.10 实现一个视频播放器
第13章 机器学习
13.1 机器学习概述
13.2 机器学习发展历程
13.3 机器学习研究现状
13.3.1 传统机器学习的研究现状
13.3.2 大数据环境下机器学习的研究现状
13.4 机器学习的分类
13.4.1 基于学习策略的分类
13.4.2 基于学习方法的分类
13.4.3 基于学习方式的分类
13.4.4 基于数据形式的分类
13.4.5 基于学习目标的分类
13.5 机器学习常见算法
13.6 机器学习的研究内容
13.7 机器学习的应用
13.8 OpenCV中的机器学习
13.8.1 支持向量机
13.8.2 贝叶斯分类器
第14章 数字水印
14.1 数字水印概述
14.1.1 数字水印的特点
14.1.2 图像数字水印
14.1.3 数字水印原理
14.1.4 嵌入过程
14.1.5 提取过程
14.2 相关函数
14.3 代码实现数字水印
第15章 图像加密和解密
15.1 图像加密和解密原理
15.2 相关函数
15.3 代码实现图像加解密
第16章 物体计数
16.1 物体计数基本原理
16.2 在图像上绘制文字
16.3 代码实现药片计数
第17章 图像轮廓
17.1 图像轮廓概述
17.2 应用场景
17.3 OpenCV中的轮廓函数
17.3.1 查找轮廓findContours
17.3.2 轮廓的基本属性
17.3.3 绘制轮廓drawContours
17.3.4 求轮廓面积contourArea
17.4 实战轮廓函数
17.5 实战黑白翻转
第18章 手势识别
18.1 手势识别概述
18.2 凸包和凸包检测
18.2.1 查找凸包的示例
18.2.2 凸缺陷及其意义
18.3 手势识别原理
18.4 区分手势0和
18.5 区分手势2到
第19章 停车场车牌识别系统
19.1 车牌识别技术概述
19.2 车牌识别技术的宏观分析
19.2.1 国外技术分析
19.2.2 国内技术分析
19.2.3 车牌识别技术的难点
19.2.4 车牌识别系统的开发思路
19.3 车牌定位技术
19.3.1 车牌特征概述
19.3.2 车牌定位方法
19.3.3 车牌图像预处理
19.3.4 车牌图像的灰度化
19.3.5 车牌图像的直方图均衡化
19.3.6 车牌图像的滤波
19.3.7 车牌图像的二值化
19.3.8 车牌图像的边缘检测
19.3.9 车牌图像的灰度映射
19.3.10 车牌图像的改进型投影法定位
19.4 车牌字符分割技术
19.4.1 常用车牌字符分割算法
19.4.2 车牌倾斜问题
19.4.3 车牌倾斜度检测方法
19.4.4 车牌倾斜度校正方法
19.4.5 车牌边框和铆钉的去除
19.4.6 车牌字符分割
19.4.7 基于垂直投影和先验知识的车牌字符分割
19.4.8 粘连车牌字符的分割
19.4.9 断裂车牌字符的合并
19.4.10 对车牌字符的切分结果进行确认
19.5 车牌字符识别技术
19.5.1 模式识别
19.5.2 字符识别
19.5.3 汉字识别
19.6 系统设计
19.7 系统拓扑结构
19.8 停车场端的详细设计
19.9 办公室端的详细设计
19.9.1 创建项目
19.9.2 设计界面
19.9.3 实现构造函数
19.9.4 文件信息类MyFileInfo
19.9.5 实现连接服务器函数
19.9.6 关联按钮槽函数
19.9.7 实现文件下载功能
19.9.8 接收文件信息
19.9.9 接收文件数据
19.9.10 图像处理相关的成员变量
19.9.11 实现打开文件
19.9.12 实现图像二值化
19.9.13 实现定位车牌
19.9.14 实现分割字符
19.9.15 实现识别结果
19.9.16 运行程序
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-

孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-

时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-

本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...
[
