新书速览|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
相关文章:
新书速览|OpenCV计算机视觉开发实践:基于Qt C++
《OpenCV计算机视觉开发实践:基于Qt C》 本书内容 OpenCV是计算机视觉领域的开发者必须掌握的技术。《OpenCV计算机视觉开发实践:基于Qt C》基于 OpenCV 4.10与Qt C进行编写,全面系统地介绍OpenCV的使用及实战案例,并配套提供全书示例源码、PPT课件与作…...
本地搭建一个简易版本的 Web3 服务
一、环境搭建与工具准备 (一)安装 Node.js 和 npm Node.js 是一个基于 JavaScript 的运行时环境,npm 是其默认的包管理器。在 Web3 开发中,Node.js 和 npm 是必不可少的工具。 访问 Node.js 官网 并下载最新的 LTS 版本。 安装…...
电脑安装CentOS系统
前言 电脑是Windows10系统,安装CentOS之前要将硬盘格式化,这个操作会将Windows10系统以及电脑上所有资料抹除,操作前务必谨慎复查是否有重要资料需要备份。 准备工作 准备两个U盘,一台电脑。提前把镜像下载好。镜像在百度网盘里…...
【Linux专栏】zip 多个文件不带路径
Linux && Oracle相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 1.背景 今天发现 Linux 解压缩的文件中,不光包含需要的文件,还保留了目录层级,不是想要的结果。因此,本文关于…...
邀请函 | 「软件定义汽车 同星定义软件」 TOSUN用户日2025·杭州站
参会邀请函 尊敬的客户及合作伙伴: 新能源汽车智能化浪潮席卷全球,杭州作为中国技术创新高地,正引领行业变革。为助力工程师伙伴应对行业挑战,解决工程难题,同星智能将于2025年5月9日(周五)在…...
start_response详解
start_response 是Python的WSGI(Web Server Gateway Interface)中的一个重要概念,它是一个可调用对象(通常是一个函数),在WSGI应用程序里发挥着关键作用,下面为你详细介绍。 作用 在WSGI规范里…...
记一次 .NET某旅行社酒店管理系统 卡死分析
一:背景 1. 讲故事 年初有位朋友找到我,说他们的管理系统不响应了,让我帮忙看下到底咋回事? 手上也有dump,那就来分析吧。 二:为什么没有响应 1. 线程池队列有积压吗? 朋友的系统是一个web系统&#…...
[预备知识]1. 线性代数基础
线性代数基础 线性代数是深度学习的重要基础,本章节将介绍深度学习中常用的线性代数概念和操作。 1. 标量、向量、矩阵与张量 1.1 标量(Scalar) 标量是单个数值,用 x ∈ R x \in \mathbb{R} x∈R 表示。在深度学习中常用于表…...
RESTful学习笔记(二)---简单网页前后端springboot项目搭建
新建项目: 项目结构 Pom.xml中添加依赖: 要有用于启动的父进程,有启动依赖,有lombok用于自动构建getter和setter方法等 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-…...
C++ AI模型部署优化实战:基于TensorRT的高效推理引擎开发
🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C、C#等开发语言,熟悉Java常用开…...
[特殊字符] Prompt如何驱动大模型对本地文件实现自主变更:Cline技术深度解析
在AI技术快速发展的今天,编程方式正在经历一场革命性的变革。从传统的"人写代码"到"AI辅助编程",再到"AI自主编程",开发效率得到了质的提升。Cline作为一款基于VSCode的AI编程助手,通过其独特的pro…...
DevOps功能详解
DevOps 详解 1. 什么是 DevOps? DevOps 是 Development(开发) 和 Operations(运维) 的组合词,代表一种通过 自动化工具、协作文化 和 流程优化 来加速软件开发与交付的 方法论。其核心目标是打破开发与运维…...
忽略 CS8616 警告在 Visual Studio 2022 中【C# 8.0 】
CS8616 警告是 C# 8.0 引入的可空引用类型(NRT)相关警告,表示"由于可空引用类型的特性,某个不可为 null 的字段可能未被初始化"。 编辑项目csproj,直接删除<Nullable>enable</Nullable> 或者修改为disable或者annota…...
[架构之美]一键服务管理大师:Ubuntu智能服务停止与清理脚本深度解析
[架构之美]一键服务管理大师:Ubuntu智能服务停止与清理脚本深度解析 服务展示: 运行脚本: 剩余服务: 一、脚本设计背景与核心价值 在Linux服务器运维中,服务管理是日常操作的重要环节。本文介绍的智能服务管理脚本&a…...
23种设计模式-结构型模式之外观模式(Java版本)
Java 外观模式(Facade Pattern)详解 🧭 什么是外观模式? 外观模式是结构型设计模式之一,为子系统中的一组接口提供一个统一的高层接口,使得子系统更易使用。 就像是酒店前台,帮你处理入住、叫…...
《数据结构之美--双向链表》
引言 之前我们学习了单链表这一数据结构,虽然单链表的功能比较多,但是也存在着一些局限性,因为在单链表中节点的指向都是单向的,因此我们想从某个节点找到它的上一个节点比较困难,来不及再迷恋单链表了,接…...
如何判断设备是否支持带电插拔——从原理到实操的全面解析
点击下面图片带您领略全新的嵌入式学习路线 🔥爆款热榜 88万阅读 1.6万收藏 一、带电插拔的核心原理 带电插拔(热插拔)的本质是通过电气隔离设计和顺序通断控制,避免电流突变对设备造成损害。 • 触点分级设计:支持热…...
Google Store 如何利用 glTF 3D 模型改变产品教育
Google 为全球广大用户提供种类繁多、持续改进的硬件产品。Google 的智能手机、智能手表、耳机、平板电脑、智能家居设备等产品均通过 Google Store(谷歌商店) 以及遍布全球的实体和数字第三方零售商销售。作为一个以在人工智能、智能家居和个人设备体验方面不断开拓创新而闻名…...
Flutter 状态管理 Riverpod
Android Studio版本 Flutter SDK 版本 将依赖项添加到您的应用 flutter pub add flutter_riverpod flutter pub add riverpod_annotation flutter pub add dev:riverpod_generator flutter pub add dev:build_runner flutter pub add dev:custom_lint flutter pub add dev:riv…...
flutter 专题 六十六 Flutter Dio包网络请求抓包解决方案
在Flutter中进行网络请求时,我们可以使用的库有3个,即Http请求库、HttpClient请求库和Dio请求库(详细介绍请参考:Flutter开发之Http网络请求),使用得最多的就是Dio请求库。因为相比Http请求库和HttpClient请…...
DSL(Domain Specific Language,领域特定语言)
DSL的定义和作用 DSL是为特定业务领域设计的专门语言,这里特指为欺诈检测场景设计的规则描述语言通过DSL,业务人员可以用接近自然语言的方式定义欺诈检测规则,而不需要编写复杂的代码DSL的具体实现:使用ANTLR4作为语法解析工具支…...
基于SpringBoot的心情疗愈平台-项目分享
基于SpringBoot的心情疗愈平台-项目分享 项目介绍项目摘要管理员功能图用户实体图心理咨询师功能图系统功能图项目预览情感树洞发布帖子讲座信息心理医生心理医生管理 最后 项目介绍 使用者:管理员、用户、心理咨询师 开发技术:MySQLJavaSpringBootVue …...
富文本图片过大问题
在做若依的项目,碰到了若依自带的公告功能的图片上传后,再显示会出现图片过大的问题。在修改若依代码无果后,退而求其次修改展示页面的代码。 问题描述: 在若依框架的打卡系统中,公告使用富文本上传图片后࿰…...
Python-Django系列—部件
部件是 Django 对 HTML 输入元素的表示。部件处理 HTML 的渲染,以及从对应于部件的 GET/POST 字典中提取数据。 内置部件生成的 HTML 使用 HTML5 语法,目标是 <!DOCTYPE html>。例如,它使用布尔属性,如 checked…...
开发者视角:轻量便捷的AI视觉训推一体机如何实现AI模型快速开发
一、行业背景 1)数据与算力基础夯实:互联网、物联网和移动互联网的普及使得视觉数据呈爆发式增长,为AI视觉训推技术提供了丰富的“燃料”。同时,GPU、TPU等计算芯片的广泛使用,以及云计算的兴起,让计算能力…...
基于Python(Django)+SQLite实现(Web)校园助手
校园助手 本校园助手采用 B/S 架构。并已将其部署到服务器上。在网址上输入 db.uplei.com 即可访问。 使用说明 可使用如下账号体验: 学生界面: 账号1:123 密码1:123 账户2:201805301348 密码2:1 # --------------…...
Django 入门指南:构建强大的 Web 应用程序
什么是 Django? Django 是一个开源的高层次 Python Web 框架,旨在快速开发安全且可维护的网站。它通过简化常见的 Web 开发任务,帮助开发者专注于开发应用的核心功能。Django 实现了“快速开发”和“尽量少的重复”的理念,提供了…...
一文了解相位阵列天线中的真时延
本文要点 真时延是宽带带相位阵列天线的关键元素之一。 真时延透过在整个信号频谱上应用可变相移来消除波束斜视现象。 在相位阵列中使用时延单元或电路板,以提供波束控制和相移。 市场越来越需要更快、更可靠的通讯网络,而宽带通信系统正在努力满…...
LangChain实现PDF中图表文本多模态数据向量化及RAG应用实战指南
如何用LangChain实现PDF多模态数据向量化及RAG应用实战指南 在大模型应用中,PDF文档因包含文本、表格、图片等异构数据,成为RAG(检索增强生成)系统的核心挑战。本文基于LangChain框架,结合多模态处理技术,…...
OkHttp入门
OkHttp 简介与使用示例 OkHttp 是一个高效的 HTTP 客户端,用于 Android、Java 应用程序以及 Kotlin 应用程序。它支持同步阻塞调用和异步调用,同时提供了强大的拦截器和重定向处理功能。OkHttp 由 Square 公司开发,因其高性能和易用性而广受…...
在ARM Linux应用层下驱动MFRC522
文章目录 1、前言2、IC卡 和 IC卡读卡器3、MFRC5223.1、寄存器集3.2、命令集3.3、数据操作3.4、基础函数编写3.4.1、MFRC522接线3.4.2、编写SPI操作函数3.4.3、编写MFRC522基础函数3.4.3.1、完整的mfrc522.h3.4.3.2、写寄存器和读寄存器3.4.3.3、复位引脚操作3.4.3.4、天线操作…...
力扣第446场周赛
有事没赶上, 赛后模拟了一下, 分享一下我的解题思路和做题感受 1.执行指令后的得分 题目链接如下:力扣 给你两个数组:instructions 和 values,数组的长度均为 n。 你需要根据以下规则模拟一个过程: 从下标 i 0 的第一个指令开始…...
close和shutdown
1.shutdown() 控制 TCP 连接的读写方向,不会关闭文件描述符,也不会触发四次挥手。 shutdown(sockfd, SHUT_RD): 关闭套接字的读方向。套接字不能再接收数据。 shutdown(sockfd, SHUT_WR): 关闭套接字的写方向。套接字不能再发送数据。 shutdown(sockfd…...
LeetCode算法题(Go语言实现)_54
题目 给你两个正整数数组 spells 和 potions ,长度分别为 n 和 m ,其中 spells[i] 表示第 i 个咒语的能量强度,potions[j] 表示第 j 瓶药水的能量强度。 同时给你一个整数 success 。一个咒语和药水的能量强度 相乘 如果 大于等于 success &a…...
.NET应用UI框架DevExpress XAF v24.2新版亮点:支持.NET 9
DevExpress XAF是一款强大的现代应用程序框架,允许同时开发ASP.NET和WinForms。DevExpress XAF采用模块化设计,开发人员可以选择内建模块,也可以自行创建,从而以更快的速度和比开发人员当前更强有力的方式创建应用程序。 在DevEx…...
前端通过jenkins和docker打包部署流程
通过jenkins实现镜像打包和上传 1.在jenkins上创建流水线任务 点击新建任务 填写任务名称 选多分支流水线 增加分支源 选git 添加并选择凭据(有项目权限的git账号密码) 填写分支的正则表达式,多分支使用^(分支名|分支名)$ 保存 …...
SpringBoot自定义验证器:企业级参数校验架构设计与实践
一、需求分析与技术选型 在复杂业务场景中,标准校验注解(如@NotBlank、@Pattern)往往无法满足特殊业务规则验证需求。例如: 需要校验字段值在预定义的枚举范围内多字段之间存在关联性校验(如起始时间不能晚于结束时间)需要动态查询数据库进行业务规则校验架构设计原则:…...
4U带屏基于DSP/ARM+FPGA+AI的电力故障录波装置设计方案,支持全国产化
4U带屏DSP/ARMFPGAAI电力故障录波分析仪,支持国产化,含有CPU主控模块,96路模拟量采集,256路开关量,通讯扩展卡等#电力故障录波#4U带屏#新能源#电力监测 主要特点 1)是采用嵌入式图形系统,以及…...
笔试题——第五周
目录 Day1 排序子序列 消减整数 最长上升子序列 Day2 爱吃素 相差不超过k的最多数 最长公共子序列(一) Day3 小红的口罩 春游 数位染色 Day4 素数回文 活动安排 合唱团 Day5 跳台阶扩展问题 包含不超过两种字符的最长子串 字符串的排列 Day6 ISBN号码 k…...
图论-Floyd算法
在搜索中bfs只适合无权图 若是碰到有权图最简单的方法就是用邻接矩阵-二维矩阵存储每个点对之间的权重,然后用floyd 并且邻接矩阵还可以处理重边的问题(用min) INFfloat(inf) ma[[INF]*n for _ in range(n)]for i in range(n):ma[i][i]0for i in rang…...
使用pyinstaller打包fastapi项目的问题记录
文章目录 PyInstaller 相关介绍作用使用方式Spec 文件介绍 FastAPI 相关介绍什么是 FastAPI?使用方式 使用 PyInstaller 打包 FastAPI 项目常见问题与解决方案 PyInstaller 相关介绍 作用 PyInstaller 是一个将 Python 程序打包成独立可执行文件的工具,…...
Java秒杀功能-案例
数据库表设计 CREATE TABLE user (id bigint(20) NOT NULL AUTO_INCREMENT,name varchar(100) NOT NULL,password varchar(100) NOT NULL,PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8;CREATE TABLE order_info (id bigint(20) NOT NULL AUTO_INCREMENT,user_id bigi…...
Abp发布订阅
在 ABP(AspNet Boilerplate)框架里运用发布 - 订阅模式,有着多方面重要目的,以下为你详细阐述: 实现组件间的解耦 减少直接依赖:在传统的编程方式中,不同组件之间可能存在紧密的耦合关系&…...
docker部署ruoyi-vue-pro前后端详细笔记
docker部署ruoyi-vue-pro前后端详细笔记 参考:YuDaoCloud:Docker 部署 - 那个码农 1.准备工作 1.1 需要准备服务器,安装bt面板方便操作 if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_panel.sh;else wg…...
软考中级数据库系统工程师学习资料分享
软考中级数据库系统工程师考试对于很多 IT 从业者和计算机专业的大学生来说,是一个重要的职业资格认证。它不仅能够提升个人的专业技能,还能为职业发展增添有力的砝码。今天,我将为大家分享一套全面且实用的学习资料,帮助大家更好…...
RESTful学习笔记(一)
Web发展 一、API 程序硬件接口(Application Programming Interface),是预先定义好的逻辑函数,软件系统不同组成部分衔接的约定,直接调用函数,无序访问代码细节,分为SDK和Web应用接口两类 SDK…...
基于 FFmpeg 的音视频处理基础原理与实验探究
目录 1 基本知识1.1 解封装1.2 AAC和ADTS说明 1.3 H2641.3.1 H264编码结构解析1.3.2 NALU1.3.2 分类 2 实验1 探究音视频信息2.1 重要结构体介绍2.2 相关的API 3 实验二 提取AAC数据4 实验三 提取h264 1 基本知识 1.1 解封装 封装的逆向操作:封装是把音频流、视频流…...
spark和hadoop的区别
一、核心定位与架构差异 Hadoop • 定位:分布式存储与计算的基础框架,核心解决海量数据的存储(HDFS)和离线批处理计算(MapReduce)问题,适合对实时性要求不高的大规模数据离线处理场景。 • 架构…...
vue使用语音识别
vue使用语音识别 使用 Web Speech API 实现语音识别功能 语音转换的原理可以简单概括为以下几个步骤: 声音捕捉:将声波转化为数字信号。特征提取:分析声音中的关键特征。声学模型:将声音特征与音素匹配。语言模型:根据…...
代码随想录算法训练营day8(栈与队列)
华子目录 用栈实现队列思路 用栈实现队列 https://leetcode.cn/problems/implement-queue-using-stacks/description/ push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。思路 初始化两个栈…...