新书速览|OpenCV计算机视觉开发实践:基于Qt C++

《OpenCV计算机视觉开发实践:基于Qt C++》

本书内容

OpenCV是计算机视觉领域的开发者必须掌握的技术。《OpenCV计算机视觉开发实践:基于Qt C++》基于 OpenCV 4.10与Qt C++进行编写,全面系统地介绍OpenCV的使用及实战案例,并配套提供全书示例源码、PPT课件与作者QQ答疑服务

《OpenCV计算机视觉开发实践:基于Qt C++》共分19章,主要内容包括数字图像视觉概述、搭建OpenCV开发环境、核心模块Core、图像处理模块基础、灰度变换和直方图修正、图像平滑、几何变换、图像边缘检测、图像分割、图像金字塔、图像形态学、视频处理、机器学习、数字水印、图像加解密、物体计数、图像轮廓、手势识别以及停车场车牌识别系统等。

本书作者

朱文伟,名校计算机专业统招硕士,20多年C\C++、Java开发经验。主导开发过密码、图形、人工智能等产品。精通Linux、Windows系统开发及数据库开发技术。著有图书《OpenCV计算机视觉开发实践:基于Qt C++》《OpenCV计算机视觉开发实践:基于Python》《Linux C与C++一线开发实践(第2版)》《Rust编程与项目实战》《嵌入式Linux驱动开发实践》《高性能Linux网络编程核心技术揭秘》《Linux C/C++服务器开发实践》《Qt 6.x从入门到精通》《PyQt 5从入门到精通》《Linux C与C++ 一线开发实践》《Visual C++2017从入门到精通》《Windows C/C++加密解密实战》《密码学原理与Java实现》《OpenCV 4.5计算机视觉开发实战(基于VC++)》《OpenCV 4.5计算机视觉开发实战:基于Python》。

本书读者

《OpenCV计算机视觉开发实践:基于Qt C++》既适合OpenCV初学者、计算机视觉与图像处理的开发人员、人工智能图像处理开发人员阅读,也适合作为高等院校或者高职高专院校计算机视觉与图像处理相关专业的教材

本书目录

第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  屏幕分辨率3

1.1.7  图像的灰度4

1.1.8  灰度级4

1.1.9  图像深度4

1.1.10  二值图像5

1.1.11  灰度图5

1.1.12  彩色图像5

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  数字图像处理常用的方法9

1.3.4  图像处理的应用12

1.4  图像信号处理层次12

1.5  计算机视觉13

1.5.1  计算机视觉的概念13

1.5.2  计算机视觉系统的构成和分类14

1.5.3  机器视觉的优势14

1.5.4  机器视觉系统的应用14

1.5.5  计算机视觉与相关学科的关系15

1.6  OpenCV概述15

1.7  Qt简介17

第2章  搭建OpenCV开发环境19

2.1  Windows下搭建OpenCV开发环境19

2.1.1  下载和安装Qt19

2.1.2  下载和解压OpenCV26

2.1.3  了解构建工具27

2.1.4  下载和安装CMake28

2.1.5  生成Makefile文件30

2.1.6  开始编译OpenCV33

2.1.7  Qt开发的第一个OpenCV程序34

2.2  Linux下搭建OpenCV开发环境38

2.2.1  准备编译OpenCV所需依赖39

2.2.2  编译OpenCV源码40

2.2.3  Linux下的第一个OpenCV程序43

2.2.4  下载Qt46

2.2.5  安装依赖包46

2.2.6  安装Qt47

2.2.7  Linux下用Qt开发OpenCV51

2.2.8  做个快照54

2.3  数学函数55

2.4  OpenCV架构56

2.5  图像输入输出模块imgcodecs57

2.5.1  imread读取图像文件58

2.5.2  imwrite保存图片60

2.6  OpenCV界面编程62

2.6.1  新建窗口并显示62

2.6.2  单窗口显示多幅图像64

2.6.3  销毁窗口66

2.6.4  调整窗口大小68

2.6.5  鼠标事件69

2.6.6  键盘事件71

2.6.7  滑动条事件73

第3章  核心模块Core76

3.1  矩阵操作76

3.1.1  矩阵类Mat76

3.1.2  构造法78

3.1.3  直接赋值法82

3.1.4  数组法82

3.1.5  create函数法83

3.1.6  定义特殊矩阵83

3.1.7  得到矩阵的行数、列数和维数84

3.1.8  矩阵的数据指针及其打印85

3.1.9  创建新的矩阵头86

3.1.10  得到矩阵通道数88

3.1.11  复制矩阵88

3.1.12  判断矩阵是否有元素93

3.1.13  矩阵的5种遍历方式93

3.1.14  设置矩阵新值100

3.1.15  得到矩阵的元素总个数100

3.1.16  矩形类Rect100

3.2  数组的操作101

3.3  读写XML和YAML文件105

3.3.1  YAML文件简介105

3.3.2  写入和读取YAML\XML文件的基本步骤106

3.3.3  XML、YAML文件的打开106

3.3.4  文本和数字的输入和输出106

3.3.5  OpenCV数据结构的输入和输出106

3.3.6  vector(arrays)和maps的输入和输出107

3.3.7  文件关闭107

第4章  图像处理模块基础113

4.1  颜色变换cvtColor113

4.2  画基本图形115

4.2.1  点的表示115

4.2.2  画矩形116

4.2.3  画圆117

4.2.4  画椭圆119

4.2.5  画线段122

4.2.6  填充多边形122

4.3  像素存放类Scalar124

4.4  使用随机数126

4.4.1  产生一个随机数128

4.4.2  返回下一个随机数130

4.4.3  用随机数填充矩阵131

4.5  文字绘制132

4.6  为图像添加边框139

4.7  在图像中查找轮廓142

第5章  灰度变换和直方图修正149

5.1  点运算149

5.1.1  基本概念149

5.1.2  点运算的目标150

5.1.3  点运算的分类150

5.1.4  点运算的特点150

5.1.5  点运算的应用150

5.2  灰度变换151

5.2.1  灰度变换概述151

5.2.2  灰度变换的作用152

5.2.3  灰度变换的方法152

5.2.4  灰度化152

5.2.5  对比度155

5.2.6  灰度的线性变换155

5.2.7  分段线性灰度变换160

5.2.8  对数变换和反对数变换165

5.2.9  幂律变换170

5.3  直方图修正172

5.3.1  直方图的概念172

5.3.2  OpenCV实现灰度直方图173

5.3.3  直方图均衡化175

第6章  图像平滑181

6.1  平滑处理算法181

6.2  线性滤波183

6.2.1  归一化方框滤波器183

6.2.2  高斯滤波器185

6.3  非线性滤波188

6.3.1  中值滤波188

6.3.2  双边滤波189

第7章  几何变换193

7.1  几何变换基础193

7.2  图像平移196

7.3  图像旋转198

7.4  仿射变换204

7.5  图像缩放207

7.5.1  缩放原理207

7.5.2  OpenCV中的缩放209

第8章  图像边缘检测211

8.1  图像边缘检测概述211

8.2  边缘检测研究的历史现状213

8.3  边缘定义及类型分析214

8.4  梯度的概念216

8.5  图像边缘检测的应用216

8.6  目前边缘检测存在的问题217

8.7  边缘检测的基本思想218

8.8  图像边缘检测的步骤219

8.9  经典图像边缘检测算法220

8.9.1  差分边缘检测221

8.9.2  Roberts算子223

8.9.3  Sobel算子边缘检测225

8.9.4  Prewitt算子边缘检测227

8.9.5  LoG边缘检测算子230

8.9.6  边缘检测的新技术与方法235

第9章  图像分割238

9.1  图像分割概述238

9.2  图像分割的应用240

9.3  图像分割的数学定义240

9.4  图像分割方法的分类241

9.4.1  基于阈值化的分割方法242

9.4.2  基于边缘的分割方法243

9.4.3  基于区域的分割方法243

9.4.4  基于神经网络的分割方法245

9.4.5  基于聚类的分割方法246

9.5  使用OpenCV进行图像分割246

9.5.1  阈值分割246

9.5.2  固定阈值分割247

9.5.3  自适应阈值分割250

9.6  彩色图像分割256

9.7  grabCut算法分割图像259

9.7.1  基本概念259

9.7.2  grabCut函数260

9.8  floodFill(漫水填充)分割263

9.8.1  基本概念263

9.8.2  floodFill函数264

9.9  分水岭分割法270

9.9.1  基本概念270

9.9.2  wathershed函数271

第10章  图像金字塔279

10.1  图像金字塔概述279

10.2  高斯金字塔280

10.2.1  向下采样281

10.2.2  向上采样284

10.3  拉普拉斯金字塔286

第11章  图像形态学288

11.1  图像形态学概述288

11.2  形态学的应用288

11.2.1  数学上的形态学289

11.2.2  格289

11.2.3  拓扑学289

11.2.4  数学形态学的组成290

11.2.5  数学形态学的应用290

11.2.6  操作分类291

11.3  结构元素291

11.4  膨胀291

11.5  腐蚀292

11.6  开运算294

11.7  闭运算295

11.8  实现腐蚀和膨胀296

11.9  开闭运算和顶帽黑帽299

11.10  击中击不中302

11.11  利用形态学运算提取水平线和垂直线305

第12章  视频处理311

12.1  OpenCV视频处理架构311

12.2  类VideoCapture312

12.3  构造VideoCapture对象312

12.4  判断视频是否打开成功313

12.5  读取视频帧314

12.6  播放视频文件314

12.7  获取和设置视频属性316

12.8  播放摄像头视频319

12.9  录制视频类VideoWriter321

12.9.1  构造VideoWriter对象321

12.9.2  初始化或重新初始化322

12.9.3  连接一个fourcc代码322

12.10  实现一个视频播放器324

第13章  机器学习330

13.1  机器学习概述330

13.2  机器学习发展历程331

13.3  机器学习研究现状332

13.3.1  传统机器学习的研究现状333

13.3.2  大数据环境下机器学习的研究现状334

13.4  机器学习的分类334

13.4.1  基于学习策略的分类335

13.4.2  基于学习方法的分类335

13.4.3  基于学习方式的分类336

13.4.4  基于数据形式的分类336

13.4.5  基于学习目标的分类336

13.5  机器学习常见算法336

13.6  机器学习的研究内容338

13.7  机器学习的应用339

13.8  OpenCV中的机器学习340

13.8.1  支持向量机341

13.8.2  贝叶斯分类器345

第14章  数字水印348

14.1  数字水印概述348

14.1.1  数字水印的特点349

14.1.2  图像数字水印349

14.1.3  数字水印原理349

14.1.4  嵌入过程350

14.1.5  提取过程350

14.2  相关函数351

14.3  代码实现数字水印354

第15章  图像加密和解密357

15.1  图像加密和解密原理357

15.2  相关函数358

15.3  代码实现图像加解密359

第16章  物体计数361

16.1  物体计数基本原理361

16.2  在图像上绘制文字361

16.3  代码实现药片计数364

第17章  图像轮廓367

17.1  图像轮廓概述367

17.2  应用场景368

17.3  OpenCV中的轮廓函数368

17.3.1  查找轮廓findContours368

17.3.2  轮廓的基本属性369

17.3.3  绘制轮廓drawContours370

17.3.4  求轮廓面积contourArea370

17.4  实战轮廓函数371

17.5  实战黑白翻转373

第18章  手势识别375

18.1  手势识别概述375

18.2  凸包和凸包检测375

18.2.1  查找凸包的示例378

18.2.2  凸缺陷及其意义381

18.3  手势识别原理387

18.4  区分手势0和1390

18.5  区分手势2到5392

第19章  停车场车牌识别系统397

19.1  车牌识别技术概述397

19.2  车牌识别技术的宏观分析398

19.2.1  国外技术分析398

19.2.2  国内技术分析400

19.2.3  车牌识别技术的难点401

19.2.4  车牌识别系统的开发思路401

19.3  车牌定位技术402

19.3.1  车牌特征概述402

19.3.2  车牌定位方法403

19.3.3  车牌图像预处理407

19.3.4  车牌图像的灰度化407

19.3.5  车牌图像的直方图均衡化408

19.3.6  车牌图像的滤波410

19.3.7  车牌图像的二值化411

19.3.8  车牌图像的边缘检测411

19.3.9  车牌图像的灰度映射412

19.3.10  车牌图像的改进型投影法定位412

19.4  车牌字符分割技术414

19.4.1  常用车牌字符分割算法414

19.4.2  车牌倾斜问题416

19.4.3  车牌倾斜度检测方法416

19.4.4  车牌倾斜度校正方法417

19.4.5  车牌边框和铆钉的去除417

19.4.6  车牌字符分割417

19.4.7  基于垂直投影和先验知识的车牌字符分割418

19.4.8  粘连车牌字符的分割419

19.4.9  断裂车牌字符的合并420

19.4.10  对车牌字符的切分结果进行确认420

19.5  车牌字符识别技术421

19.5.1  模式识别421

19.5.2  字符识别422

19.5.3  汉字识别424

19.6  系统设计424

19.7  系统拓扑结构426

19.8  停车场端的详细设计426

19.9  办公室端的详细设计433

19.9.1  创建项目433

19.9.2  设计界面433

19.9.3  实现构造函数434

19.9.4  文件信息类MyFileInfo435

19.9.5  实现连接服务器函数436

19.9.6  关联按钮槽函数437

19.9.7  实现文件下载功能437

19.9.8  接收文件信息438

19.9.9  接收文件数据440

19.9.10  图像处理相关的成员变量441

19.9.11  实现打开文件441

19.9.12  实现图像二值化442

19.9.13  实现定位车牌444

19.9.14  实现分割字符447

19.9.15  实现识别结果452

19.9.16  运行程序455

本书特色

(1)基于Qt C++跨平台特性,需要Qt C++编程基础知识。

(2)基于Python 3.8和OpenCV 4.10版本编写,面向初学者,涵盖传统的图形图像算法与视频处理方法,并配以示例代码,内容丰富,行文通俗易懂。

(3)详解OpenCV 中的220多个函数,并给出100多个示例程序,以及车牌识别、目标检测、数字水印、图像加解密、物体计数、图像轮廓、手势识别等案例。

(4)配套示例源码、PPT课件、配图PDF文件与作者QQ一对一答疑服务。

本文摘自《OpenCV计算机视觉开发实践:基于Qt C++》,获出版社和作者授权发布。

OpenCV计算机视觉开发实践:基于Qt C++——jdhttps://item.jd.com/14417875.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/79966.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【上位机——MFC】消息映射机制

消息映射机制 Window消息分类消息映射机制的使用代码示例 MFC框架利用消息映射机制把消息、命令与它们的处理函数映射起来。具体实现方法是在每个能接收和处理消息的类中,定义一个消息和消息函数指针对照表,即消息映射表。 在不重写WindowProc虚函数的大…

docker学习笔记2-最佳实践

一、在容器中启动mysql的最佳实践 (一)查找目录 1、mysql的配置文件路径 /etc/mysql/conf.d 2、mysql的数据目录 /var/lib/mysql 3、环境变量 4、端口 mysql的默认端口3306。 (二)启动命令 docker run -d -p 3306:3306 …

Vue3核心源码解析

/packages/complier-core 定位​​:​​编译时核心​​,处理 Vue 模板的编译逻辑。​​核心功能​​: ​​模板解析​​:将 .vue 文件的模板语法(HTML-like)解析为 ​​抽象语法树 (AST)​​。​​转换优化…

n8n 中文系列教程_05.如何在本机部署/安装 n8n(详细图文教程)

n8n 是一款强大的开源工作流自动化工具,可帮助你连接各类应用与服务,实现自动化任务。如果你想快速体验 n8n 的功能,本机部署是最简单的方式。本教程将手把手指导你在 Windows 或 MacOS 上通过 Docker 轻松安装和运行 n8n,无需服务…

【python】pyCharm常用快捷键使用-(2)

pyCharm常用快捷键使用 快速导入任意类 【CTRLALTSPACE】代码补全【CTRLSHIFTENTER】代码快速修正【ALTENTER】代码调试快捷键

Docker 镜像、容器和 Docker Compose的区别

前言:Docker 的镜像、容器和 Docker Compose 是容器化技术的核心组件,以下是对它们的详细解析及使用场景说明。 ​​1、Docker 镜像(Image)​​ ​​定义​​: 镜像是只读模板,包含运行应用程序所需的代码、…

算法——背包问题(分类)

背包问题(Knapsack Problem)是一类经典的组合优化问题,广泛应用于资源分配、投资决策、货物装载等领域。根据约束条件和问题设定的不同,背包问题主要分为以下几种类型: 1. 0-1 背包问题(0-1 Knapsack Probl…

多路由器通过RIP动态路由实现通讯(单臂路由)

多路由器通过RIP动态路由实现通讯(单臂路由) R1(开启端口并配置IP) Router>en Router#conf t Router(config)#int g0/0 Router(config-if)#no shu Router(config-if)#no shutdown Router(config-if)#ip add 192.168.10.254 255.255.255.0 Router(c…

从底层设计原理分析并理解SQL 的执行顺序

​一、执行顺序的底层设计原理​​ ​​1. 数据源的确定与连接(FROM → ON → JOIN)​​ ​​FROM​​:数据库首先需要确定数据的物理来源,从磁盘加载表或子查询的原始数据。此时尚未应用任何筛选,仅读取元数据&#…

游戏引擎学习第237天:使用 OpenGL 显示图像

win32_game.cpp: 禁用 PFD_DOUBLEBUFFER 我们正在处理一个新的开发阶段,目标是在使用 OpenGL 渲染的同时能正常通过 OBS 进行直播。昨天我们已经尝试了一整天来解决这个问题,希望能找到一种方式让 OBS 能正确地捕捉到 OpenGL 的窗口画面。虽然我们不确定…

(二)mac中Grafana监控Linux上的MySQL(Mysqld_exporter)

框架:GrafanaPrometheusMysqld_exporter 一、监控查看端安装 Grafana安装-CSDN博客 普罗米修斯Prometheus监控安装(mac)-CSDN博客 1.启动Grafana服务 brew services start grafana 打开浏览器输入http://localhost:3000进入grafana登录…

GitHub 趋势日报 (2025年04月17日)

本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ 📈 今日整体趋势 Top 10 排名项目名称项目描述今日获星总星数语言1Anduin2017/HowToCook程序员在家做饭方法指南。Programmer’s guide about how to cook at home (Simplified Chinese onl…⭐ 224…

(一)mac中Grafana监控Linux上的CPU等(Node_exporter 安装使用)

框架:GrafanaPrometheusNode_exporter 机器状态监控(监控服务器CPU,硬盘,网络等状态) Node_exporter安装在被测服务器上,启动服务 各步骤的IP地址要换为被测服务器的IP地址Prometheus.yml的 targets值网页访问的ip部分grafana添加数据源的…

java IO/NIO/AIO

(✪▽✪)曼波~~~~!让曼波用最可爱的赛马娘方式给你讲解吧!(⁄ ⁄•⁄ω⁄•⁄ ⁄) 🎠曼波思维导图大冲刺(先看框架再看细节哦): 📚 解释 Java 中 IO、NIO、AIO 的区别和适用场景: …

Silverlight发展历程(微软2021年已经停止支持Silverlight 5)

文章目录 Microsoft Silverlight 发展历程引言起源与背景(2006-2007)互联网技术格局与微软的挑战WPF/E 项目的启动 Silverlight 1.0 的诞生(2007)正式命名与首次发布初步的市场定位 Silverlight 2.0:真正的突破&#x…

【大数据、数据开发与数据分析面试题汇总(含答案)】

在大数据、数据开发与数据分析领域的面试中,扎实掌握各类知识点至关重要。以下是精心整理的面试题,涵盖单选题和多选题,助你备考一臂之力。 试题目录 大数据、数据开发与数据分析高频面试题解析1. 数据仓库分层架构设计2. 维度建模与范式建模…

Docker部署禅道21.6开源版本

将数据库相关环境变量分开,增加注释或空格使得命令更易读。 如果你的 MySQL 主机、端口等配置没有变化,应该确保这些信息是安全的,并考虑使用 Docker secrets 或环境变量配置来避免直接暴露敏感信息。 docker run -d -it --privilegedtrue …

Yocto项目实战教程 · 第4章:4.2小节-菜谱

🔍 B站相应的视频教程: 📌 Yocto项目实战教程-第4章-4.2小节-菜谱 记得三连,标为原始粉丝。 在 Yocto 项目中,**菜谱(Recipe)**承载了包的配置信息、源码获取方式、编译与安装步骤,是…

【pytorch】torch.nn.Unfold操作

说明 一个代码里涉及到了unfold的操作,看了半天官网都没整明白维度怎么变化的,参考这个链接搞明白了: https://blog.csdn.net/ViatorSun/article/details/119940759 https://zhuanlan.zhihu.com/p/361140988 维度计算 输入( N,…

Linux 固定IP地址

一.查看网口状态: $ ip a 二.配置静态IP文件: $ sudo vi /etc/network/interface auto eth0 iface eth0 inet static address 192.168.0.252 gateway 192.168.0.1 netmask 255.255.255.0 #network 192.168.0.0 #broadcast 192.168.0.255 三.重启网卡让新…