当前位置: 首页 > article >正文

OpenCV Imgproc 模块使用指南(Python 版)

一、模块概述

imgproc 模块是 OpenCV 的图像处理核心,提供从基础滤波到高级特征提取的全流程功能。核心功能包括:

  • 图像滤波:降噪、平滑、锐化
  • 几何变换:缩放、旋转、透视校正
  • 颜色空间转换:BGR↔灰度 / HSV/Lab 等
  • 阈值处理:二值化、自适应阈值
  • 边缘与轮廓检测:Canny 边缘、Sobel 梯度
  • 形态学操作:膨胀、腐蚀(见扩展章节)

二、核心功能详解与实战

1. 图像滤波(降噪与增强)

1.1 函数对比与选择
函数名称类型适用场景核心参数示例代码
cv2.blur()均值滤波轻度降噪(如文本图像)ksize=(3,3)blur = cv2.blur(img, (5,5))
cv2.GaussianBlur()高斯滤波高斯噪声去除(自然图像)ksize=(5,5), sigmaX=1.0gauss = cv2.GaussianBlur(img, (5,5), 1.0)
cv2.medianBlur()中值滤波椒盐噪声去除(强降噪)ksize=3median = cv2.medianBlur(img, 3)
cv2.bilateralFilter()双边滤波保持边缘的降噪(图像修复)d=9, sigmaColor=75bilateral = cv2.bilateralFilter(img, 9, 75, 75)
1.2 实战:图像降噪流水线

python

import cv2# 读取含噪声的图像
img = cv2.imread("noisy_image.jpg")# 降噪流水线:高斯滤波 → 双边滤波
gauss = cv2.GaussianBlur(img, (5, 5), 1.0)  # 去除高斯噪声
denoised = cv2.bilateralFilter(gauss, 9, 75, 75)  # 保持边缘的精细降噪# 显示结果
cv2.imshow("Noisy Image", img)
cv2.imshow("Denoised Image", denoised)
cv2.waitKey(0)
应用场景
  • 医学影像:CT 扫描降噪(medianBlur 去除椒盐噪声)。
  • 遥感图像:高斯滤波预处理(降低传感器噪声)。

2. 几何变换(尺寸与形状调整)

2.1 函数详解
函数名称功能核心参数说明示例代码(旋转 45°)
cv2.resize()尺寸调整dsize=(width, height)interpolationresized = cv2.resize(img, (640, 480), cv2.INTER_AREA)
cv2.warpAffine()仿射变换(平移 / 旋转 / 缩放)M(2x3 变换矩阵), dsizeM = cv2.getRotationMatrix2D(center, 45, 1.0)
rotated = cv2.warpAffine(img, M, (w,h))
cv2.warpPerspective()透视变换M(3x3 透视矩阵), dsizeM = cv2.getPerspectiveTransform(src_pts, dst_pts)
warped = cv2.warpPerspective(img, M, (w,h))
2.2 实战:图像配准(旋转 + 缩放)

python

import cv2
import numpy as np# 读取图像
img = cv2.imread("倾斜文本.jpg")
h, w = img.shape[:2]# 构建仿射变换矩阵(旋转 30°,缩放 0.8)
center = (w//2, h//2)
M = cv2.getRotationMatrix2D(center, 30, 0.8)# 应用变换
rotated = cv2.warpAffine(img, M, (w, h), borderValue=(255, 255, 255))  # 白色填充边界# 显示结果
cv2.imshow("Original", img)
cv2.imshow("Registered", rotated)
cv2.waitKey(0)
应用场景
  • 文档扫描:透视变换校正倾斜文档(warpPerspective)。
  • 视频监控:动态调整 ROI 尺寸(resize + 插值优化)。

3. 颜色空间转换(色域操作)

3.1 常用颜色空间
转换代码说明应用场景
COLOR_BGR2GRAYBGR 转灰度减少计算量(如边缘检测)
COLOR_BGR2HSVBGR 转 HSV(色相 / 饱和度 / 明度)颜色分割(如红色物体提取)
COLOR_BGR2LABBGR 转 Lab(亮度 / 色度)图像增强(对比度拉伸)
3.2 实战:基于 HSV 的颜色分割

python

import cv2
import numpy as np# 读取图像
img = cv2.imread("traffic_light.jpg")
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)  # 转换为 HSV# 定义红色范围(HSV)
lower_red = np.array([0, 120, 70])
upper_red = np.array([10, 255, 255])
mask = cv2.inRange(hsv, lower_red, upper_red)  # 生成掩码# 应用掩码
red_objects = cv2.bitwise_and(img, img, mask=mask)# 显示结果
cv2.imshow("Original", img)
cv2.imshow("Red Mask", mask)
cv2.imshow("Red Objects", red_objects)
cv2.waitKey(0)
应用场景
  • 机器人视觉:HSV 颜色分割识别特定物体(如红色垃圾桶)。
  • 医学影像:Lab 空间增强组织对比度(如 MRI 图像)。

4. 阈值处理(二值化)

4.1 方法对比
函数名称类型适用场景核心参数示例代码
cv2.threshold()全局阈值高对比度图像(如文档)thresh=127type=THRESH_BINARY_, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
cv2.adaptiveThreshold()自适应阈值光照不均图像(如手机拍摄)blockSize=11C=2adaptive = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)
4.2 实战:文档二值化(自适应阈值)

python

import cv2# 读取低光照文档
gray = cv2.imread("document.jpg", cv2.IMREAD_GRAYSCALE)# 自适应阈值(高斯加权)
adaptive = cv2.adaptiveThreshold(gray, 255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY, 11, 2
)# 显示结果
cv2.imshow("Gray Image", gray)
cv2.imshow("Adaptive Threshold", adaptive)
cv2.waitKey(0)
应用场景
  • OCR 预处理:自适应阈值提升低质量文档的文本分割。
  • 工业检测:全局阈值提取高对比度零件轮廓。

5. 边缘检测(特征提取)

5.1 算法对比
函数名称类型输出适用场景核心参数
cv2.Canny()边缘检测二值边缘图通用边缘检测(如物体轮廓)threshold1=50, threshold2=150
cv2.Sobel()梯度计算梯度幅值(单通道)方向敏感检测(如水平 / 垂直边缘)dx=1, dy=0(x 方向梯度)
cv2.Laplacian()二阶导数边缘增强(锐化)图像锐化(如医学影像)ksize=3
5.2 实战:Canny 边缘检测(轮廓提取)

python

import cv2# 读取图像并预处理
img = cv2.imread("object.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (5, 5), 0)  # 降噪# Canny 边缘检测
edges = cv2.Canny(blur, 50, 150)  # 高低阈值(推荐比例 1:2 或 1:3)# 查找轮廓
contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, contours, -1, (0, 255, 0), 2)  # 绘制轮廓# 显示结果
cv2.imshow("Edges", edges)
cv2.imshow("Contours", img)
cv2.waitKey(0)
应用场景
  • 自动驾驶:Canny 检测车道线(结合 Hough 变换)。
  • 医学诊断:Laplacian 锐化增强 CT 图像细节。

三、完整应用场景实现

场景 1:工业零件缺陷检测(滤波→二值化→轮廓分析)

流程
  1. 降噪(中值滤波)→ 2. 灰度转换 → 3. 自适应阈值 → 4. 轮廓检测 → 5. 缺陷标记。
完整代码

python

import cv2
import numpy as np# 1. 读取图像
part = cv2.imread("industrial_part.jpg")# 2. 预处理
gray = cv2.cvtColor(part, cv2.COLOR_BGR2GRAY)
denoised = cv2.medianBlur(gray, 3)  # 中值滤波去椒盐噪声# 3. 自适应阈值二值化
thresh = cv2.adaptiveThreshold(denoised, 255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY_INV, 11, 2
)# 4. 轮廓检测
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 5. 标记缺陷(面积过滤)
for cnt in contours:area = cv2.contourArea(cnt)if area < 1000:  # 小面积视为缺陷x, y, w, h = cv2.boundingRect(cnt)cv2.rectangle(part, (x, y), (x+w, y+h), (0, 0, 255), 2)# 显示结果
cv2.imshow("Part Inspection", part)
cv2.waitKey(0)

场景 2:实时视频手势识别(颜色分割→轮廓分析)

流程
  1. 视频捕获 → 2. HSV 颜色分割 → 3. 形态学操作 → 4. 轮廓检测 → 5. 手势识别。
完整代码

python

import cv2
import numpy as np# 初始化摄像头
cap = cv2.VideoCapture(0)while cap.isOpened():ret, frame = cap.read()if not ret: break# 1. 颜色分割(HSV 肤色检测)hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)lower_skin = np.array([0, 20, 70])upper_skin = np.array([30, 255, 255])mask = cv2.inRange(hsv, lower_skin, upper_skin)# 2. 形态学操作(降噪)mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, np.ones((3,3), np.uint8))# 3. 轮廓检测contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 4. 绘制最大轮廓(手势)if contours:largest_cnt = max(contours, key=cv2.contourArea)cv2.drawContours(frame, [largest_cnt], -1, (0, 255, 0), 2)# 显示结果cv2.imshow("Gesture Recognition", frame)if cv2.waitKey(1) & 0xFF == 27:  # ESC 退出breakcap.release()

四、最佳实践与性能优化

1. 滤波优化

  • 尺寸选择:滤波核尺寸建议为奇数(如 3x3, 5x5)。
  • 双边滤波注意d=0 时自动计算,sigmaColor 和 sigmaSpace 建议相等。

2. 几何变换

  • 插值选择
    • 缩小:cv2.INTER_AREA(高质量)。
    • 放大:cv2.INTER_LINEAR(速度快)/ cv2.INTER_CUBIC(高质量)。
  • 透视变换:至少 4 对对应点(getPerspectiveTransform)。

3. 颜色空间

  • 避免频繁转换:预处理阶段统一转换(如 BGR→HSV 一次完成)。
  • HSV 范围调试:使用 cv2.createTrackbar 实时调整阈值。

4. 阈值与边缘

  • Canny 三阶段:降噪(高斯滤波)→ 梯度计算 → 非极大值抑制。
  • 自适应阈值blockSize 建议为奇数(如 11, 15)。

五、函数速查表

功能分类函数名称核心参数示例输出类型
图像滤波cv2.GaussianBlur()ksize=(5,5), sigmaX=1.0uint8/float32
几何变换cv2.warpAffine()M(2x3 矩阵), dsize=(640,480)uint8
颜色转换cv2.cvtColor()code=COLOR_BGR2HSV对应颜色空间
阈值处理cv2.adaptiveThreshold()blockSize=11, C=2uint8(二值图)
边缘检测cv2.Canny()threshold1=50, threshold2=150uint8(二值边缘)

六、扩展学习建议

1. 形态学操作(扩展)

python

# 膨胀与腐蚀(去除小噪声)
kernel = np.ones((5,5), np.uint8)
dilated = cv2.dilate(thresh, kernel, iterations=1)
eroded = cv2.erode(dilated, kernel, iterations=1)

2. 直方图均衡化(对比度增强)

python

# 全局直方图均衡
equalized = cv2.equalizeHist(gray)# CLAHE(自适应直方图均衡)
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
clahe_equalized = clahe.apply(gray)

3. 自定义卷积(锐化 / 浮雕)

python

# 锐化核
kernel = np.array([[-1, -1, -1],[-1,  9, -1],[-1, -1, -1]
], dtype=np.float32)
sharpened = cv2.filter2D(img, -1, kernel)

七、总结与学习路径

plaintext

Imgproc 学习路径:
基础 → 滤波 → 几何变换 → 颜色空间 → 阈值 → 边缘检测 → 形态学(扩展)推荐项目:
1. 文档扫描系统(透视变换 + 二值化)
2. 实时颜色识别机器人(HSV 分割 + 轮廓跟踪)
3. 工业缺陷检测(滤波 → 阈值 → 轮廓分析)性能优化:
- 向量化操作替代循环(如 `img[:, :, 0] = 0`)
- 预处理阶段统一数据类型(如 `float32` 用于计算)
- 利用 OpenCV 内置优化:`cv2.setUseOptimized(True)`

八、完整代码仓库(示例)

python

# Imgproc 模块综合应用示例
import cv2
import numpy as np# 1. 图像读取与预处理
img = cv2.imread("input.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (5, 5), 1.0)# 2. 边缘检测与轮廓分析
edges = cv2.Canny(blur, 50, 150)
contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 3. 几何变换(旋转 + 缩放)
h, w = img.shape[:2]
M = cv2.getRotationMatrix2D((w//2, h//2), 45, 0.8)
rotated = cv2.warpAffine(img, M, (w, h))# 4. 颜色分割(HSV 红色检测)
hsv = cv2.cvtColor(rotated, cv2.COLOR_BGR2HSV)
mask = cv2.inRange(hsv, np.array([0, 120, 70]), np.array([10, 255, 255]))# 5. 显示结果
cv2.imshow("Edges", edges)
cv2.imshow("Rotated Image", rotated)
cv2.imshow("Red Mask", mask)
cv2.waitKey(0)
cv2.destroyAllWindows()

九、环境配置与依赖

bash

# 安装 OpenCV
pip install opencv-python# 验证版本
python -c "import cv2; print(cv2.__version__)"  # 需 4.5+

通过此指南,开发者可全面掌握 Imgproc 模块的核心功能,从基础滤波到复杂特征提取,结合医学、工业、机器人等领域的实战项目,快速构建图像处理解决方案。每个代码示例均可独立运行,方便在实际开发中复用和扩展。建议结合官方文档(Imgproc 模块)进行深入学习。

相关文章:

OpenCV Imgproc 模块使用指南(Python 版)

一、模块概述 imgproc 模块是 OpenCV 的图像处理核心&#xff0c;提供从基础滤波到高级特征提取的全流程功能。核心功能包括&#xff1a; 图像滤波&#xff1a;降噪、平滑、锐化几何变换&#xff1a;缩放、旋转、透视校正颜色空间转换&#xff1a;BGR↔灰度 / HSV/Lab 等阈值…...

C/C++蓝桥杯算法真题打卡(Day6)

一、P8615 [蓝桥杯 2014 国 C] 拼接平方数 - 洛谷 方法一&#xff1a;算法代码&#xff08;字符串分割法&#xff09; #include<bits/stdc.h> // 包含标准库中的所有头文件&#xff0c;方便编程 using namespace std; // 使用标准命名空间&#xff0c;避免每次调用…...

ORACLE RAC ASM双存储架构下存储部分LUN异常的处理

早上接到用户电话&#xff0c;出现有表空间不足的告警&#xff0c;事实上此环境经常巡检并且有告警系统&#xff0c;一开始就带着有所疑惑的心理&#xff0c;结果同事在扩大表空间时&#xff0c;遇到报错 ORA-15401/ORA-17505,提示ASM空间满了&#xff1a; ALERT日志&#xff1…...

【设计模式】SOLID 设计原则概述

SOLID 是面向对象设计中的五大原则&#xff0c;不管什么面向对象的语言&#xff0c; 这个准则都很重要&#xff0c;如果你没听说过&#xff0c;赶紧先学一下。它可以提高代码的可维护性、可扩展性和可读性&#xff0c;使代码更加健壮、易于测试和扩展。SOLID 代表以下五个设计原…...

从边缘到核心:群联云防护如何重新定义安全加速边界?

一、安全能力的全方位碾压 1. 协议层深度防护 四层防御&#xff1a; 动态过滤畸形TCP/UDP包&#xff08;如SYN Flood&#xff09;&#xff0c;传统CDN仅限速率控制。技术示例&#xff1a;基于AI的协议指纹分析&#xff0c;拦截异常连接模式。 七层防御&#xff1a; 精准识别业…...

others-rustdesk远程

title: others-rustdesk远程 categories: Others tags: [others, 远程] date: 2025-03-19 10:19:34 comments: false mathjax: true toc: true others-rustdesk远程, 替代 todesk 的解决方案 前篇 官方 服务器 - https://rustdesk.com/docs/zh-cn/self-host/rustdesk-server-o…...

记录 macOS 上使用 Homebrew 安装的软件

Homebrew 是 macOS 上最受欢迎的软件包管理器之一&#xff0c;能够轻松安装各种命令行工具和 GUI 应用。本文记录了我通过 Homebrew 安装的各种软件&#xff0c;并对它们的用途和基本使用方法进行介绍。 &#x1f37a; Homebrew 介绍 Homebrew 是一个开源的包管理器&#xff…...

springmvc中使用interceptor拦截

HandlerInterceptor 是Spring MVC中用于在请求处理之前、之后以及完成之后执行逻辑的接口。它与Servlet的Filter类似&#xff0c;但更加灵活&#xff0c;因为它可以访问Spring的上下文和模型数据。HandlerInterceptor 常用于日志记录、权限验证、性能监控等场景。 ### **1. 创…...

C++基础 [八] - list的使用与模拟实现

目录 list的介绍 List的迭代器失效问题 List中sort的效率测试 list 容器的模拟实现思想 模块分析 作用分析 list_node类设计 list 的迭代器类设计 迭代器类--存在的意义 迭代器类--模拟实现 模板参数 和 成员变量 构造函数 * 运算符的重载 运算符的重载 -- 运…...

使用excel.EasyExcel实现导出有自定义样式模板的excel数据文件,粘贴即用!!!

客户要求导出的excel文件是有好看格式的&#xff0c;当然本文举例模板文件比较简单&#xff0c;内容丰富的模板可以自行设置&#xff0c;话不多说&#xff0c;第一步设置一个"好看"的excel文件模板 上面要注意的地方是{.变量名} &#xff0c;这里的变量名对应的就是…...

Spring Boot 集成 Elasticsearch怎样在不启动es的情况下正常启动服务

解释 在spingboot 集成es客户端后&#xff0c;每当服务启动时&#xff0c;服务默认都会查看es中是否已经创建了对应的索引&#xff0c;如果没有索引则创建。基于上面的规则我们可以通过配置不自动创建索引来达到在没有es服务的情况下正常启动服务。 解决办法 在entity类的Docu…...

Java面试黄金宝典8

1. 什么是 Spring MVC 定义 Spring MVC 是 Spring 框架里用于构建 Web 应用程序的模块&#xff0c;它严格遵循 MVC&#xff08;Model - View - Controller&#xff09;设计模式。这种设计模式把应用程序清晰地划分成三个主要部分&#xff1a; Model&#xff08;模型&#xff0…...

JVM常见概念之条件移动

问题 当我们有分支频率数据时&#xff0c;有什么有趣的技巧可以做吗&#xff1f;什么是条件移动&#xff1f; 基础知识 如果您需要在来自一个分支的两个结果之间进行选择&#xff0c;那么您可以在 ISA 级别做两件不同的事情。 首先&#xff0c;你可以创建一个分支&#xff…...

Android AI ChatBot-v1.6.3-28-开心版[免登录使用GPT-4o和DeepSeek]

Android AI ChatBot- 链接&#xff1a;https://pan.xunlei.com/s/VOLi1Ua071S6QZBGixcVL5eeA1?pwdp3tt# 免登录使用GPT-4o和DeepSeek...

集成学习(上):Bagging集成方法

一、什么是集成学习&#xff1f; 在机器学习的世界里&#xff0c;没有哪个模型是完美无缺的。就像古希腊神话中的"盲人摸象"&#xff0c;单个模型往往只能捕捉到数据特征的某个侧面。但当我们把多个模型的智慧集合起来&#xff0c;就能像拼图一样还原出完整的真相&a…...

DeepSeek R1 本地部署指南 (3) - 更换本地部署模型 Windows/macOS 通用

0.准备 完成 Windows 或 macOS 安装&#xff1a; DeepSeek R1 本地部署指南 (1) - Windows 本地部署-CSDN博客 DeepSeek R1 本地部署指南 (2) - macOS 本地部署-CSDN博客 以下内容 Windows 和 macOS 命令执行相同&#xff1a; Windows 管理员启动&#xff1a;命令提示符 CMD ma…...

【TI MSPM0】Timer学习

一、计数器 加法计数器&#xff1a;每进入一个脉冲&#xff0c;就加一减法计算器&#xff1a;每进入一个脉冲&#xff0c;就减一 当计数器减到0&#xff0c;触发中断 1.最短计时时间 当时钟周期为1khz时&#xff0c;最短计时时间为1ms&#xff0c;最长计时时间为65535ms 当时…...

Windows部署deepseek R1训练数据后通过AnythingLLM当服务器创建问答页面

如果要了解Windows部署Ollama 、deepseek R1请看我上一篇内容。 这是接上一篇的。 AnythingLLM是一个开源的全栈AI客户端&#xff0c;支持本地部署和API集成。它可以将任何文档或内容转化为上下文&#xff0c;供各种语言模型&#xff08;LLM&#xff09;在对话中使用。以下是…...

重删算法中的Bloom滤波器详解与C++实现

一、Bloom滤波器基础概念 Bloom滤波器&#xff08;Bloom Filter&#xff09;是一种空间高效的概率型数据结构&#xff0c;用于快速判断某个元素是否存在于集合中。其核心特性&#xff1a; 存在不确定性&#xff1a;可能出现假阳性&#xff08;False Positive&#xff09;&…...

信奥赛CSP-J复赛集训(模拟算法专题)(27):P5016 [NOIP 2018 普及组] 龙虎斗

信奥赛CSP-J复赛集训(模拟算法专题)(27):P5016 [NOIP 2018 普及组] 龙虎斗 题目背景 NOIP2018 普及组 T2 题目描述 轩轩和凯凯正在玩一款叫《龙虎斗》的游戏,游戏的棋盘是一条线段,线段上有 n n n 个兵营(自左至右编号 1 ∼ n 1 \sim n 1∼n),相邻编号的兵营之间…...

多模态大模型常见问题

1.视觉编码器和 LLM 连接时&#xff0c;使用 BLIP2中 Q-Former那种复杂的 Adaptor 好还是 LLaVA中简单的 MLP 好&#xff0c;说说各自的优缺点&#xff1f; Q-Former&#xff08;BLIP2&#xff09;&#xff1a; 优点&#xff1a;Q-Former 通过查询机制有效融合了视觉和语言特征…...

SpringBoot项目实战(初级)

目录 一、数据库搭建 二、代码开发 1.pom.xml 2.thymeleaf模块处理的配置类 3.application配置文件 4.配置&#xff08;在启动类中&#xff09; 5.编写数据层 ②编写dao层 ③编写service层 接口 实现类 注意 补充&#xff08;注入的3个注解&#xff09; 1.AutoWir…...

Linux NFS、自动挂载与系统启动管理指南

1. NFS客户端挂载导出的目录的方式 NFS&#xff08;网络文件系统&#xff09; 允许将远程服务器的目录挂载到本地&#xff0c;像访问本地文件一样操作远程文件。挂载方式主要有两种&#xff1a; 手动挂载&#xff1a;使用 mount 命令&#xff08;临时生效&#xff0c;重启后丢…...

uniapp实现全局拖拽按钮

要先引入 “vue3-draggable-resizable”: “^1.6.5” 1.创建DragComponent组件 <template><!-- 抽屉组件 --><div class"drag-container" id"dragBox" :style"{ zIndex: zIndex }"><Vue3DraggableResizable :initW"…...

SOFABoot-10-聊一聊 sofatboot 的十个问题

前言 大家好&#xff0c;我是老马。 sofastack 其实出来很久了&#xff0c;第一次应该是在 2022 年左右开始关注&#xff0c;但是一直没有深入研究。 最近想学习一下 SOFA 对于生态的设计和思考。 sofaboot 系列 SOFABoot-00-sofaboot 概览 SOFABoot-01-蚂蚁金服开源的 s…...

计算机网络——总结

01. 网络的发展及体系结构 网络演进历程 从1969年ARPANET的4个节点发展到如今覆盖全球的互联网&#xff0c;网络技术经历了电路交换到分组交换、有线连接到无线覆盖的革命性变革。5G时代的到来使得网络传输速度突破10Gbps&#xff0c;物联网设备数量突破百亿级别。 网络体系…...

Umi-OCR- OCR 文字识别工具,支持截图、批量图片排版解析

Umi-OCR 是免费开源的离线 OCR 文字识别软件。无需联网&#xff0c;解压即用&#xff0c;支持截图、批量图片、PDF 扫描件的文字识别&#xff0c;能识别数学公式、二维码&#xff0c;可生成双层可搜索 PDF。内置多语言识别库&#xff0c;界面支持多语言切换&#xff0c;提供命令…...

高速网络包处理,基础网络协议上内核态直接处理数据包,XDP技术的原理

文章目录 预备知识TCP/IP 网络模型&#xff08;4层、7层&#xff09;iptables/netfilterlinux网络为什么慢 DPDKXDPBFPeBPFXDPXDP 程序典型执行流通过网络协议栈的入包XDP 组成 使用 GO 编写 XDP 程序明确流程选择eBPF库编写eBPF代码编写Go代码动态更新黑名单 预备知识 TCP/IP…...

C++:背包问题习题

1. 货币系统 1371. 货币系统 - AcWing题库 给定 V 种货币&#xff08;单位&#xff1a;元&#xff09;&#xff0c;每种货币使用的次数不限。 不同种类的货币&#xff0c;面值可能是相同的。 现在&#xff0c;要你用这 V 种货币凑出 N 元钱&#xff0c;请问共有多少种不同的…...

数据可信安全流通实战,隐语开源社区Meetup武汉站开放报名

隐语开源社区 Meetup 系列再出发&#xff01;2025 年将以武汉为始发站&#xff0c;聚焦"技术赋能场景驱动"&#xff0c;希望将先进技术深度融入数据要素流转的各个环节&#xff0c;推动其在实际应用场景中落地生根&#xff0c;助力释放数据要素的最大潜能&#xff01…...