图像处理 | 图像二值化
在图像处理领域,图像二值化是一个重要的操作,它将彩色或灰度图像转换为只有两种颜色(通常是黑白)的图像。二值化广泛应用于文字识别、图像分割、边缘检测等领域,尤其在处理简洁和高对比度的图像时非常有效。本文将深入介绍图像二值化的概念、原理、常见算法及应用场景。
1. 什么是图像二值化?
图像二值化是指将彩色或灰度图像转换为二值图像(也称为黑白图像)的过程。二值图像只有两种像素值,一般是0和255,分别代表黑色和白色。
二值化的目标:
通过将图像中的像素值转化为两个极端值(通常是0和255),使得图像的特征更加突出,便于进一步的图像处理,比如轮廓提取、对象检测等。
常见应用:
- 字符识别:如OCR(光学字符识别)技术。
- 目标检测:在图像中分割出目标。
- 图像分割:根据某些条件将图像划分为前景和背景。
2. 图像二值化的原理
图像的每一个像素都有一定的灰度值(灰度图像)。二值化的目的是根据某个阈值,将图像的像素值分为两类:
- 前景(目标):图像中的感兴趣部分,通常为白色(255)。
- 背景:图像中不需要关注的部分,通常为黑色(0)。
在具体实现时,图像的每个像素值与预设的阈值进行比较:
- 如果像素值大于阈值,则该像素为白色(255)。
- 如果像素值小于或等于阈值,则该像素为黑色(0)。
这种方法的关键在于如何选择阈值。阈值的选择将直接影响二值化效果的好坏。
3. 二值化算法
3.1 全局阈值法
最简单的一种二值化方法。选择一个固定的阈值,遍历每一个像素,将其灰度值与该阈值进行比较,大于阈值的像素值变为255,其他变为0。
实现步骤:
- 读取灰度图像。
- 选择一个阈值。
- 对图像中的每个像素进行比较,应用二值化规则。
import cv2# 读取图像
image = cv2.imread('example.jpg', 0)# 设置阈值
threshold_value = 127# 应用全局阈值
_, binary_image = cv2.threshold(image, threshold_value, 255, cv2.THRESH_BINARY)# 显示结果
cv2.imshow("Binary Image", binary_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
参数说明
-
src:输入图像(可以是灰度图像,也可以是单通道图像)。输入图像的类型应为
CV_8U
(8-bit unsigned integer),即图像的像素值范围是 [0, 255]。 -
thresh:阈值(标量)。将输入图像中的像素值与此阈值进行比较,以决定哪些像素应该设置为 0,哪些像素应该设置为
maxval
(通常为 255)。 -
maxval:最大值。小于阈值的像素将被设置为 0(或其他自定义值),大于阈值的像素将被设置为
maxval
(通常为 255)。 -
type:阈值类型,决定如何对像素值进行处理。常见的阈值类型有:
cv2.THRESH_BINARY
:如果像素值大于阈值,设置为maxval
,否则设置为 0(黑色)。cv2.THRESH_BINARY_INV
:如果像素值大于阈值,设置为 0, 否则设置为maxval
(白色反转)。cv2.THRESH_TRUNC
:如果像素值大于阈值,将其截断为阈值(即设为thresh
),否则保持原值。cv2.THRESH_TOZERO
:如果像素值大于阈值,保持原值,否则设置为 0。cv2.THRESH_TOZERO_INV
:如果像素值大于阈值,设置为 0,否则保持原值。
-
retval:返回值,通常是所用的阈值。如果是
THRESH_OTSU
或THRESH_TRIANGLE
,返回值为计算出的阈值。 -
dst:输出图像,二值化后的图像。
常见的阈值类型
- cv2.THRESH_BINARY:传统的二值化,如果像素值大于阈值
thresh
,则将其设为maxval
,否则设为 0(黑色)。 - cv2.THRESH_BINARY_INV:反转的二值化。如果像素值大于阈值
thresh
,则将其设为 0(黑色),否则设为maxval
(白色)。 - cv2.THRESH_TRUNC:阈值截断。如果像素值大于
thresh
,则将其值截断为thresh
,否则保持不变。 - cv2.THRESH_TOZERO:如果像素值大于
thresh
,则保持原值,否则设为 0。 - cv2.THRESH_TOZERO_INV:反转的
TOZERO
。如果像素值大于thresh
,则设为 0,否则保持原值。
优缺点:
- 优点:实现简单,计算量小。
- 缺点:阈值选取困难,尤其是图像背景与前景对比不明显时,效果不佳。
3.2 自适应阈值法
自适应阈值法是针对全局阈值法的一种改进,它根据图像局部区域的特征动态计算每个像素的阈值,适用于不同光照条件下的图像。自适应阈值法可以有效解决光照不均匀问题。
实现步骤:
- 将图像划分为多个小区域(通常是窗口)。
- 对每个小区域计算局部的阈值。
- 使用局部阈值进行二值化。
import cv2# 读取图像
image = cv2.imread('example.jpg', 0)# 自适应阈值
binary_image = cv2.adaptiveThreshold(image, 255, cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY, 11, 2)# 显示结果
cv2.imshow("Binary Image", binary_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
参数说明
-
src:输入图像(必须是灰度图像,即单通道图像)。输入图像的类型可以是
CV_8U
(8-bit unsigned integer),通常是灰度图像。 -
maxValue:最大值,即二值化后的最大像素值。通常设为
255
,代表最大亮度。 -
adaptiveMethod:自适应阈值计算方法,有两种可选的计算方式:
cv2.ADAPTIVE_THRESH_MEAN_C
:基于邻域区域的平均值来计算阈值。cv2.ADAPTIVE_THRESH_GAUSSIAN_C
:基于邻域区域的加权和(高斯加权)来计算阈值。
-
thresholdType:阈值类型,指定如何应用计算出的阈值:
cv2.THRESH_BINARY
:大于阈值的像素设为maxValue
,否则设为 0(黑色)。cv2.THRESH_BINARY_INV
:与cv2.THRESH_BINARY
相反,小于阈值的像素设为maxValue
,否则设为 0。
-
blockSize:邻域区域的大小(奇数)。它决定了用于计算每个像素阈值的区域大小。例如,
blockSize=11
意味着每个像素的阈值是以一个 11x11 的邻域窗口计算的。必须是奇数(如 3, 5, 7, 9, 11 等)。 -
C:常数项,用于调整阈值。计算出的局部阈值会减去常数
C
,它的作用是调节二值化的灵敏度。这个参数可以使阈值更高或更低,通常设置为一个小的整数(如 5 或 10)。
优缺点:
- 优点:适应性强,能处理光照不均匀的图像。
- 缺点:计算量较大,处理速度较慢。
3.3 Otsu's 阈值法
Otsu’s 阈值法是一种基于图像灰度分布的自动阈值选择方法,它通过最大化类间方差来选择最佳的阈值。该方法不需要人工设定阈值,适合于图像中前景和背景对比强烈的情况。
实现步骤:
- 计算图像的直方图。
- 通过 Otsu 方法选择一个最优阈值,使得前景和背景的类间方差最大。
- 使用该阈值进行二值化。
import cv2# 读取图像
image = cv2.imread('example.jpg', 0)# 使用Otsu的阈值方法
_, binary_image = cv2.threshold(image, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)# 显示结果
cv2.imshow("Binary Image", binary_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
优缺点:
- 优点:无需人工设定阈值,自动化程度高,适用于对比度强的图像。
- 缺点:当图像背景与前景不明显区分时,效果不理想。
4. 图像二值化的应用场景
4.1 光学字符识别(OCR)
OCR 技术用于从扫描的文档或图像中提取文字。二值化在 OCR 中起到了关键作用,通过将图像转换为黑白色,减少了干扰信息,增强了字符的对比度,进而提高了识别精度。
4.2 目标检测与分割
二值化常用于将目标与背景分离。在目标检测任务中,二值化有助于简化图像,快速提取出目标区域。
4.3 医学图像处理
在医学图像中,二值化常用于分割图像中的病变区域。例如,使用二值化处理 CT 或 MRI 图像,以提取肿瘤或其他异常组织的区域。
4.4 边缘检测
通过二值化后的图像,可以更加清晰地显示出图像的边缘,进而用于后续的边缘检测或轮廓提取等操作。
5. 总结
图像二值化是图像处理中非常基础且重要的操作。它将图像中的信息压缩为仅含两种颜色的图像,在许多领域中都有广泛应用。通过简单的阈值选择或更先进的自适应和 Otsu 方法,图像的前景和背景可以被清晰地分离出来,从而为后续的图像分析和处理提供便利。
- 全局阈值法:简单高效,但在复杂图像中可能效果不好。
- 自适应阈值法:适应性强,处理光照不均匀的图像效果好。
- Otsu's 方法:自动选择最优阈值,适用于前景与背景对比明显的图像。
随着技术的不断发展,二值化技术在人工智能、医学影像、图像识别等领域的应用将越来越广泛。如果你也在处理图像时遇到二值化的需求,选择合适的算法将极大地提升你的工作效率和精度。
相关文章:
图像处理 | 图像二值化
在图像处理领域,图像二值化是一个重要的操作,它将彩色或灰度图像转换为只有两种颜色(通常是黑白)的图像。二值化广泛应用于文字识别、图像分割、边缘检测等领域,尤其在处理简洁和高对比度的图像时非常有效。本文将深入…...
ASP.NET Core 中服务生命周期详解:Scoped、Transient 和 Singleton 的业务场景分析
前言 在 ASP.NET Core 中,服务的生命周期直接影响应用的性能和行为。通过依赖注入容器 (Dependency Injection, DI),我们可以为服务定义其生命周期:Scoped、Transient 和 Singleton。本文将详细阐述这些生命周期的区别及其在实际业务中的应用…...
鼠标自动移动防止锁屏的办公神器 —— 定时执行专家
目录 ◆ 如何设置 ◇ 方法1:使用【执行Nircmd命令】任务 ◇ 方法2:使用【模拟键盘输入】任务 ◆ 定时执行专家介绍 ◆ 定时执行专家最新版下载 ◆ 如何设置 ◇ 方法1:使用【执行Nircmd命令】任务 1、点击工具栏第一个图标【新建任务】&…...
开源库:jcon-cpp
说明 jcon-cpp 是一个用于 C 的 JSON-RPC 库,它允许开发者通过 JSON-RPC 协议进行进程间通信(IPC)。JSON-RPC 是一种轻量级的远程过程调用协议,基于 JSON 格式数据进行通信。基于MIT协议,最新代码基于Qt6实现。可通过…...
Docker入门之docker基本命令
Docker入门之docker基本命令 官方网站:https://www.docker.com/ 1. 拉取官方镜像并创建容器(以redis为例) 拉取官方镜像 docker pull redis# 如果不需要添加到自定义网络使用这个命令,如需要,直接看第二步 docker r…...
C++ Qt练习项目 QChar功能测试
个人学习笔记 代码仓库 GitCode - 全球开发者的开源社区,开源代码托管平台 新建项目 设计UI 1、拖入group box去掉名字 2、拖入2个LineEdit 3、拖入两个Label 4、拖入两个PushButton 5、点栅格布局 1、拖入GroupBox 2、拖入4个PushButton 3、点栅格布局 1、拖入GroupBo…...
Taro+react 开发第一节创建 带有redux状态管理的项目
Taro 项目基于 node,请确保已具备较新的 node 环境(>16.20.0),推荐使用 node 版本管理工具 nvm 来管理 node,这样不仅可以很方便地切换 node 版本,而且全局安装时候也不用加 sudo 了。 1.安装 npm inf…...
【SOC 芯片设计 DFT 学习专栏 -- RTL 中的信号名和 Netlist 中的信号名差异】
Overview 本文将介绍 soc 设计中 RTL-to-Netlist 映射及 RTL 中的信号名和 Netlist 中的信号名差异, 在 SoC设计中,RTL-to-Netlist映射 是从RTL(Register Transfer Level)代码转换为Netlist的过程。这通常涉及将用硬件描述语言&…...
551 灌溉
常规解法: #include<bits/stdc.h> using namespace std; int n,m,k,t; const int N105; bool a[N][N],b[N][N]; int cnt; //设置滚动数组来存贮当前和下一状态的条件 //处理传播扩散问题非常有效int main() {cin>>n>>m>>t;for(int i1;i&l…...
计算机网络之---OSI七层模型
为什么会有七层模型 OSI七层模型的出现源于计算机网络技术的发展需求,主要解决以下几个问题: 标准化与互操作性 随着计算机网络的快速发展,不同厂商、不同技术之间的设备和系统需要能够无缝通信。而不同厂商在网络硬件、软件、协议等方面存在…...
spring task使用
Spring Task 简介 Spring Task 是 Spring 框架原生自带的任务调度框架,它犹如一把瑞士军刀,为开发者提供了丰富多样的功能,助力轻松创建和管理定时任务。相较于其他一些第三方任务调度框架,Spring Task 最大的优势在于其与 Sprin…...
ADB->查看进程并强杀进程
查看进程 adb shell ps | findstr com.example.myapplication// result u0_a275 26312 914 17185988 193260 do_freezer_trap 0 S com.example.myapplication用户USER: u0_a275 该字段表示运行此进程的用户。在 Android 中,应用通常以 uN_aM 的格式表…...
Qt重写webrtc的demo peerconnection
整个demo为: 可以选择多个编码方式: cmake_minimum_required(VERSION 3.5)project(untitled LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_INCLUDE_CURRENT_DIR ON)set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON)set(CMA…...
comfyui精准作图之gligen
简介 在 Stable Diffusion(SD)中,GLIGEN 是一种用于增强文本到图像生成模型可控性的技术。它通过在现有的预训练扩散模型(如 Stable Diffusion)基础上,引入额外的定位输入(如边界框、关键点或参…...
再次梳理ISP的大致流程
前言: 随着智能手机的普及,相机与我们的生活越来越紧密相关。在日常生活中,我们只需要轻轻按下手机上的拍照按钮,就能记录下美好时刻。那么问题来了:从我们指尖按下拍照按钮到一张色彩丰富的照片呈现在我们面前&#x…...
系统思考与因果智慧
“众生畏果,菩萨畏因”,这句话蕴藏着深厚的因果智慧,与系统思考不谋而合。 众生畏果,体现了大多数人的行为模式:关注的是眼前的问题与结果,比如失败、冲突、痛苦。正如在系统思考中,我们称之为…...
k8s排错集:zk集群的pod报错 Init:CrashLoopBackOff无法启动
zk三节点集群,zk-0无法启动 statefulset 进到该node节点上查看容器的报错日志,发现在初始化container的时候一个命令有问题 查看正常zk集群的pod的资源配置文件 解决办法: 修改资源配置文件 应该修改为 chown -R 1000:1000 /zkenv kubec…...
商品详情API接口数据解析,API接口系列(示例返回数据(JSON格式))
商品详情API接口是用于获取特定商品详细信息的编程接口。它通常返回JSON格式的数据,包含商品的各种属性,如名称、价格、描述、库存状态、图片URL等。以下是一个典型的商品详情API接口数据解析示例,以及如何调用和使用这些数据的基本步骤。 示…...
Qt官方下载地址
1. 最新版本 Qt官方最新版本下载地址:https://www.qt.io/download-qt-installer 当前最新版本Qt6.8.* 如下图: 2. 历史版本 如果你要下载历史版本安装工具或者源码编译方式安装,请转至此链接进行下载:https://download.qt.i…...
Python自学 - 类进阶(可调用对象)
返回目录 1 Python自学 - 类进阶(可调用对象) 可调用对象在Python中有很重要的作用,那什么是可调用对象呢? 可以简单的理解为,凡是对象可以加括号给参数的都叫可调用对象,如:obj(x)中obj就是可调用对象,因…...
键盘过滤驱动
文章目录 概述注意源码参考资料 概述 irp请求会从io管理器中传递到设备栈中依次向下发送,当到达底层真实设备处理完成后,会依次返回,这时如果在设备栈中有我们自己注册的设备,就可以起到一个过滤的功能。键盘过滤驱动就是如此&am…...
Type-C单口便携显示器-LDR6021
Type-C单口便携显示器是一种新兴的显示设备,它凭借其便携性、高性能和广泛的应用场景等优势,正在成为市场的新宠。以下是Type-C单口便携显示器的具体运用方式: 一、连接与传输 1. **设备连接**:Type-C单口便携显示器通过Type-C接…...
ClickHouse vs StarRocks 选型对比
一、面向列存的 DBMS 新的选择 Hadoop 从诞生已经十三年了,Hadoop 的供应商争先恐后的为 Hadoop 贡献各种开源插件,发明各种的解决方案技术栈,一方面确实帮助很多用户解决了问题,但另一方面因为繁杂的技术栈与高昂的维护成本&…...
服务器数据恢复—raid5故障导致上层ORACLE无法启动的数据恢复案例
服务器数据恢复环境&故障: 一台服务器上的8块硬盘组建了一组raid5磁盘阵列。上层安装windows server操作系统,部署了oracle数据库。 raid5阵列中有2块硬盘的硬盘指示灯显示异常报警。服务器操作系统无法启动,ORACLE数据库也无法启动。 服…...
鼠标过滤驱动
文章目录 概述代码参考资料 概述 其编写过程大体与键盘过滤驱动相似,只需要切换一下附加的目标设备以及创建的设备类型等。但在该操作后依然无法捕获到Vmware创建的win7操作系统的鼠标irp信息,于是通过在获取鼠标驱动,遍历其所有的设备进而附…...
SQL进阶实战技巧:LeetCode2201. 统计可以提取的工件?
目录 0 题目描述 1 数据准备 2 问题分析 第一步:生成每个工件的所有单元格 第二步:标记被挖掘的单元格...
Supermaven 加入 Cursor:AI 编码新篇章
引言 2024 年 11 月 11 日,我们迎来了一个激动人心的时刻——Supermaven 正式加入 Cursor! 这一合作标志着 AI 编程工具进入了一个新的发展阶段,为开发者提供更智能、更高效的编码体验。本文将带您了解此次合并的背景、意义以及未来的发展方…...
金融项目实战 01|功能测试分析与设计
前置内容:金融项目准备的内容笔记可直接看如下笔记 只看:一、投资专业术语 和 二、项目简介 两部分文章浏览阅读2.3k次,点赞70次,收藏67次。安享智慧理财金融系统测试项目,测试用例,接口测试,金…...
阿里云直播互动Web
官方文档:互动消息Web端集成方法_视频直播(LIVE)-阿里云帮助中心 以下是代码实现: <!-- 引入阿里云互动文件 --> <script src"https://g.alicdn.com/code/lib/jquery/3.7.1/jquery.min.js"></script> <script src&quo…...
python【输入和输出】
Python 有三种输出值的方式: 表达式语句print() 函数使用文件对象的 write() 方法,标准输出文件可以用 sys.stdout 引用。 ① 将输出的值转成字符串,可以使用 repr() 或 str() 函数来实现: str(): 函数返回一个用户易…...
网络安全建设方案,信息安全风险评估报告,信息安全检测文档(Word原件完整版)
一、概述 1.1工作方法 1.2评估依据 1.3评估范围 1.4评估方法 1.5基本信息 二、资产分析 2.1 信息资产识别概述 2.2 信息资产识别 三、评估说明 3.1无线网络安全检查项目评估 3.2无线网络与系统安全评估 3.3 ip管理与补丁管理 3.4防火墙 四、威胁细…...
nexus搭建maven私服
说到maven私服每个公司都有,比如我上一篇文章介绍的自定义日志starter,就可以上传到maven私服供大家使用,每次更新只需deploy一下就行,以下就是本人搭建私服的步骤 使用docker安装nexus #拉取镜像 docker pull sonatype/nexus3:…...
Redis为 List/Set/Hash 的元素设置单独的过期时间
一.业务简介 我们知道,Redis 里面暂时没有接口给 List、Set 或者 Hash 的 field 单独设置过期时间,只能给整个列表、集合或者 Hash 设置过期时间。 这样,当 List/Set/Hash 过期时,里面的所有 field 元素就全部过期了。但这样并不…...
高比例压缩:Linux 中的压缩命令与技巧
文章目录 高比例压缩:Linux 中的压缩命令与技巧1. 压缩格式的选择2. gzip 命令示例:压缩文件示例:解压文件 3. bzip2 命令示例:压缩文件示例:解压文件 4. xz 命令示例:压缩文件示例:解压文件 5.…...
73.矩阵置零 python
矩阵置零 题目题目描述示例 1:示例 2:提示: 题解思路分析Python 实现代码代码解释提交结果 题目 题目描述 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例…...
工业互联网项目开发工作流及各阶段核心关注点
工业互联网项目开发全流程V3.0 工业互联网项目开发工作流程及核心问题 一、需求分析 1、共享平台需求分析 这个平台要解决什么问题? 这个平台的用户群体是谁? 这个平台应该具备哪些主要功能? 这个平台的使用场景是什么? 这个平…...
简单易用的PDF工具箱
软件介绍 PDF24 Creator是一款简单易用的PDF工具箱,而且完全免费,没有任何功能限制。既可以访问官网在线使用各种PDF工具,也可以下载软件离线使用各种PDF工具。 软件功能 1、PDF转换 支持将多种文件格式(Word、PowerPoint、Exc…...
氧化铌在光学领域的独特贡献与应用拓展-京煌科技
在当今科技日新月异、各领域不断寻求突破创新的时代背景下,众多材料因其独特的性能而备受关注,氧化铌便是其中极具代表性的一种。作为铌的氧化物,其化学式为 Nb₂O₅,以无色或白色固体的形态存在,正凭借着优良的热稳定…...
EXCEL技巧
1. EXCEL技巧 1.1. 截取表格内某个字符之前的所有字符 1.1.1.样例 在单元格内输入函数: # 截取A1单元格内“分”字符左边的所有字符 LEFT(A1,FIND("分",A1)-1)1.1.2.截图...
Java 将RTF文档转换为Word、PDF、HTML、图片
RTF文档因其跨平台兼容性而广泛使用,但有时在不同的应用场景可能需要特定的文档格式。例如,Word文档适合编辑和协作,PDF文档适合打印和分发,HTML文档适合在线展示,图片格式则适合社交媒体分享。因此我们可能会需要将RT…...
shell的变量
在程序设计语言中,变量是一个非常重要的概念。也是初学者在进行Shell程序设计之前必须掌 握的一个非常基础的概念。只有理解变量的使用方法,才能设计出良好的程序。本节将介绍Shell中变量 的相关知识。 1、什么是变量 顾名思义,变量就是程序…...
【STM32】利用SysTick定时器定时1s
1.SysTick简单介绍 SysTick定时器是一个24位的倒计数定时器,当计数到0时,将从RELOAD寄存器中自动重装载定时初值,开始新一轮计数。 SysTick定时器用于在每隔一定的时间产生一个中断,即使在系统睡眠模式下也能工作。 关于SysTic…...
halcon3d 如何计算平面法向量!确实很简单
这个问题其实一直困扰了我很长时间,之前是怎么算的呢 对于一个平面,我会先求它的fit_primitives_object_model_3d去将它拟合,接下来用surface_normals_object_model_3d 算子生成它的法线,后用get_object_model_3d_params (ObjectModel3DNormals, ‘point_normal_x’, GenP…...
计算机网络_物理层
2.1物理层的基本概念 传输媒体 导引型传输媒体 双绞线 同轴电缆 光纤 非导引型传输媒体 微波通信 2~40GHz 物理层协议的主要任务 机械特性 电器特性 功能特性 过程特性 物理层概述 物理层考虑是怎样才能在连接各种计算机的传输媒体上传输数据比特流…...
Springboot——钉钉(站内)实现登录第三方应用
文章目录 前言准备1、创建钉钉应用,并开放网页应用2、配置网页应用各项参数发布版本 前端改造后端逻辑1、获取应用免登录 Access_token2、通过免登录 Access_token 和 Auth_Code 获取对应登录人信息 注意事项 前言 PC端的钉钉中工作台,增加第三方应用&a…...
libusb学习——简单介绍
文章目录 libusb 简介libusb 编译libusb 源码目录介绍核心代码文件平台支持例子 API使用libusb初始化和去初始化libusb设备处理和枚举libusb 杂项libusb USB描述符libusb 设备热插拔事件通知libusb 异步设备I/Olibusb 同步设备I/Olibusb 轮询与定时 libusb 涉及技术参考 libusb…...
Vue进阶(贰幺叁)node 版本切换
文章目录 一、前言1.1 什么是nvm? 二、查看已安装好的 node 版本三、下载 node 版本四、切换 node 版本五、查看在用 node 版本六、拓展阅读 一、前言 项目开发阶段,会涉及多node版本切换应用场景,可应用nvm实现node版本切换。 1.1 什么是nvm? nvm是…...
[AI] 大模型提示词:理解与高效使用指南
随着大模型(如GPT、Claude、PaLM等)在各领域的应用逐步普及,**提示词(Prompt)**的重要性愈发凸显。提示词作为与大模型交互的主要方式,不仅直接影响生成结果的质量,还决定了模型在特定任务中的适…...
关于linux网桥(Linux Bridge)的一些个人记录
文章目录 1. Linux Bridge简述2. 网桥创建创建配置持久化在Debian/Ubuntu系统上:在CentOS/RHEL系统上: 启用和验证 3. 关于linux网桥不转发ip帧的问题原因解决配置持久化 4. 查看网桥学习交换表手动添加或删除条目添加条目删除条目 配置静态条目设置条目…...
黑马天机学堂学习计划模块
核心功能 系统设计思路 代码分析 1. 学习记录管理 • 存储学习记录到 Redis: 利用 Redis 缓存学习记录,减少频繁的数据库访问。 public void writeRecordCache(LearningRecord record) {String key String.format("LEARNING:R…...