OpenCV 基础模块 Python 版
OpenCV 基础模块权威指南(Python 版)
一、模块全景图
plaintext
OpenCV 架构 (v4.x+)
├─ 核心层
│ ├─ core:基础数据结构与操作(Mat/Scalar/Point)
│ └─ imgproc:图像处理流水线(滤波→变换→检测)
├─ 交互层
│ ├─ highgui:GUI 与媒体 I/O(显示/捕获/交互)
│ └─ video:视频分析(运动检测/目标跟踪)
├─ 3D 视觉层
│ └─ calib3d:相机校准与 3D 重建
├─ 特征工程层
│ └─ features2d:特征检测/描述/匹配
├─ 应用层
│ ├─ objdetect:传统目标检测(Haar/HOG)
│ ├─ ml:经典机器学习(SVM/K-means)
│ └─ dnn:深度学习推理(YOLO/ResNet)
├─ 工具模块
│ ├─ flann:快速近邻搜索
│ ├─ photo:图像修复(inpaint)
│ └─ stitching:图像拼接
二、核心模块详解
模块 1:核心模块(cv2.core
)
1.1 数据结构体系
结构 | 维度 | 典型用途 | 内存布局示例 |
---|---|---|---|
Mat | N-D | 图像 / 矩阵(含 ROI 机制) | (height, width, channels) |
Scalar | 1-D | 多通道值(BGR 颜色 / 像素值) | (B, G, R) (0-255) |
Point | 2-D | 坐标点(x, y) | (100, 200) |
Size | 2-D | 尺寸(width, height) | (320, 240) |
Rect | 4-D | 矩形(x, y, width, height) | (50, 50, 200, 150) |
1.2 核心操作
python
# 图像创建与属性
img = np.zeros((480, 640, 3), dtype=np.uint8) # 黑色图像(BGR)
print(f"图像尺寸: {img.shape}") # (480, 640, 3)
print(f"数据类型: {img.dtype}") # uint8# 区域操作(ROI)
roi = img[100:300, 200:400] # 裁剪区域
roi[:] = (0, 255, 0) # 设置为绿色# 绘图函数(抗锯齿优化)
cv2.circle(img, (320, 240), 50, (255, 0, 0), 2, cv2.LINE_AA) # 抗锯齿圆
cv2.putText(img, "OpenCV", (50, 50), cv2.FONT_HERSHEY_TRIPLEX, 1, (0, 255, 255), 1, cv2.LINE_AA)
1.3 内存管理最佳实践
- 浅拷贝:
img_view = img[::]
(共享数据,无内存复制) - 深拷贝:
img_copy = img.copy()
(独立数据副本) - 类型转换:
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
(节省内存的通道转换)
模块 2:图像处理(cv2.imgproc
)
2.1 处理流水线(典型工作流)
plaintext
输入图像 → 滤波(降噪) → 几何变换 → 颜色空间转换 → 阈值处理 → 特征检测
2.2 核心功能矩阵
功能分类 | 算法类型 | 核心函数 | 典型参数示例 |
---|---|---|---|
图像滤波 | 线性滤波 | cv2.GaussianBlur() | ksize=(5,5), sigmaX=1.0 |
非线性滤波 | cv2.medianBlur() | ksize=3 | |
几何变换 | 仿射变换 | cv2.warpAffine() | M=平移/旋转矩阵 |
透视变换 | cv2.warpPerspective() | M=3x3 透视矩阵 | |
颜色空间 | 色域转换 | cv2.cvtColor() | code=COLOR_BGR2HSV |
阈值处理 | 全局阈值 | cv2.threshold() | thresh=127, type=THRESH_BINARY |
自适应阈值 | cv2.adaptiveThreshold() | method=ADAPTIVE_THRESH_GAUSSIAN_C | |
边缘检测 | 梯度法 | cv2.Sobel() | ddepth=CV_64F, dx=1, dy=0 |
轮廓检测 | cv2.Canny() | threshold1=50, threshold2=150 |
2.3 实战案例:图像锐化
python
# 定义锐化卷积核(拉普拉斯算子变种)
kernel = np.array([[0, -1, 0],[-1, 5, -1],[0, -1, 0]
], dtype=np.float32)sharpened = cv2.filter2D(img, -1, kernel) # -1 表示保留原数据类型
模块 3:图形用户界面(cv2.highgui
)
3.1 交互系统架构
plaintext
显示系统:imshow() → 窗口管理(destroyAllWindows())
输入系统:waitKey() → 键盘事件(ASCII 码捕获)
鼠标系统:setMouseCallback() → 事件驱动(点击/拖拽)
3.2 高级应用:实时视频标注
python
# 鼠标回调函数(标注矩形)
drawing = False
ix, iy = -1, -1def draw_rectangle(event, x, y, flags, param):global ix, iy, drawingif event == cv2.EVENT_LBUTTONDOWN:drawing = Trueix, iy = x, yelif event == cv2.EVENT_MOUSEMOVE:if drawing:cv2.rectangle(img, (ix, iy), (x, y), (0, 255, 0), 2)elif event == cv2.EVENT_LBUTTONUP:drawing = False# 主循环
cv2.namedWindow("Annotation")
cv2.setMouseCallback("Annotation", draw_rectangle)while True:cv2.imshow("Annotation", img)if cv2.waitKey(1) & 0xFF == ord('s'): # 保存标注cv2.imwrite("annotated.jpg", img)elif cv2.waitKey(1) & 0xFF == 27: # ESC 退出break
模块 4:视频分析(cv2.video
)
4.1 运动分析流水线
plaintext
视频流 → 背景建模(MOG2/KNN) → 前景提取 → 目标跟踪(KCF/MOSSE) → 轨迹绘制
4.2 背景减除实战
python
# 初始化 MOG2 背景减除器
back_sub = cv2.createBackgroundSubtractorMOG2(history=200, # 历史帧数detectShadows=False # 关闭阴影检测
)cap = cv2.VideoCapture("traffic.mp4")while cap.isOpened():ret, frame = cap.read()if not ret: break# 前景掩码fg_mask = back_sub.apply(frame)# 形态学后处理(降噪)fg_mask = cv2.morphologyEx(fg_mask, cv2.MORPH_CLOSE, np.ones((5,5), np.uint8))# 轮廓检测contours, _ = cv2.findContours(fg_mask, cv2.RETR_EXTERNAL, cv2.CARACTER_APPROX_SIMPLE)# 绘制运动区域for cnt in contours:if cv2.contourArea(cnt) > 1000: # 过滤小区域x, y, w, h = cv2.boundingRect(cnt)cv2.rectangle(frame, (x,y), (x+w,y+h), (0, 255, 0), 2)cv2.imshow("Motion Detection", frame)if cv2.waitKey(30) & 0xFF == ord('q'):break
模块 5:相机校准(cv2.calib3d
)
5.1 校准参数体系
参数名称 | 物理意义 | 典型值范围 |
---|---|---|
内参矩阵 (K) | 焦距 / 主点 / 畸变 | [[f_x, 0, c_x], [0, f_y, c_y], [0, 0, 1]] |
畸变系数 (D) | 径向 / 切向畸变 | [k1, k2, p1, p2, k3] |
外参矩阵 (R/T) | 相机姿态(旋转 / 平移) | 3x3 旋转矩阵 + 平移向量 |
5.2 完整校准流程
-
采集棋盘格图像(≥10 张):
python
# 生成棋盘格角点(世界坐标系) objp = np.zeros((7*5, 3), np.float32) objp[:,:2] = np.mgrid[0:7, 0:5].T.reshape(-1, 2) # 7x5 内角点
-
检测角点并优化:
python
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001) imgpoints = [] # 存储图像角点for img_path in calibration_images:img = cv2.imread(img_path)gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)ret, corners = cv2.findChessboardCorners(gray, (7,5), None)if ret:corners = cv2.cornerSubPix(gray, corners, (11,11), (-1,-1), criteria)imgpoints.append(corners)cv2.drawChessboardCorners(img, (7,5), corners, ret)
-
计算校准参数:
python
ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1], None, None )
-
去畸变应用:
python
h, w = img.shape[:2] newcameramtx, roi = cv2.getOptimalNewCameraMatrix(mtx, dist, (w,h), 1, (w,h)) undistorted = cv2.undistort(img, mtx, dist, None, newcameramtx)
模块 6:特征工程(cv2.features2d
)
6.1 特征检测对比
算法 | 专利状态 | 尺度不变 | 旋转不变 | 计算速度 | 描述子维度 |
---|---|---|---|---|---|
SIFT | 已过期 | 是 | 是 | 慢 | 128 |
SURF | 专利 | 是 | 是 | 中 | 64/128 |
ORB | 开源 | 是(FAST + 金字塔) | 是(BRIEF + 旋转) | 快 | 32 |
6.2 ORB 特征匹配实战
python
# 初始化 ORB
orb = cv2.ORB_create(nfeatures=500, # 最大特征数scaleFactor=1.2, # 金字塔缩放系数patchSize=31 # 描述子区域大小
)# 提取特征
kp1, des1 = orb.detectAndCompute(img1, None)
kp2, des2 = orb.detectAndCompute(img2, None)# 匹配特征(汉明距离)
bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
matches = bf.match(des1, des2)
matches = sorted(matches, key=lambda x: x.distance) # 按距离排序# 绘制匹配
matched_img = cv2.drawMatches(img1, kp1, img2, kp2, matches[:30], None,flags=cv2.DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS
)
模块 7:目标检测(cv2.objdetect
)
7.1 Haar 级联检测优化
python
# 加载优化后的分类器
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_alt2.xml"
)# 多尺度检测(GPU 加速)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray,scaleFactor=1.1, # 尺度步长minNeighbors=5, # 检测框最小邻域minSize=(30, 30), # 最小检测尺寸flags=cv2.CASCADE_SCALE_IMAGE
)# 绘制结果(带置信度)
for (x,y,w,h) in faces:cv2.rectangle(img, (x,y), (x+w,y+h), (255,0,0), 2)cv2.putText(img, "Face", (x, y-10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (255,0,0), 2)
模块 8:深度学习(cv2.dnn
)
8.1 YOLOv8 目标检测实战
python
# 加载模型(需下载 yolov8n.onnx)
net = cv2.dnn.readNetFromONNX("yolov8n.onnx")# 预处理
blob = cv2.dnn.blobFromImage(img, 1/255.0, (640, 640), swapRB=True, crop=False
)# 前向传播
net.setInput(blob)
outputs = net.forward(net.getUnconnectedOutLayersNames())# 解析输出
for output in outputs:for detection in output:scores = detection[4:]class_id = np.argmax(scores)confidence = scores[class_id]if confidence > 0.5:# 边界框解码x, y, w, h = detection[:4] * np.array([img.shape[1], img.shape[0], img.shape[1], img.shape[0]])cx, cy = int(x), int(y)w, h = int(w), int(h)cv2.rectangle(img, (cx-w//2, cy-h//2), (cx+w//2, cy+h//2), (0, 255, 0), 2)cv2.putText(img, f"{class_names[class_id]} {confidence:.2f}", (cx-w//2, cy-h//2-10), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2)
三、模块对比与选型指南
任务类型 | 传统方案(CPU) | 深度学习方案(GPU) | 性能对比 |
---|---|---|---|
人脸检测 | Haar + objdetect | MTCNN + dnn | ★★★☆ vs ★★★★★ |
图像分类 | SVM + ml | ResNet + dnn | ★★☆ vs ★★★★★ |
目标跟踪 | KCF + video | ByteTrack + dnn | ★★★ vs ★★★★★ |
图像拼接 | stitching 模块 | DeepStitch + dnn | ★★★★ vs ★★★★★ |
四、开发最佳实践
4.1 性能优化技巧
-
数据类型优化:
- 使用
uint8
存储图像(节省内存) - 浮点运算使用
float32
(比float64
快 2 倍)
- 使用
-
ROI 操作:
python
# 高效 ROI 赋值(避免循环) img[100:200, 300:400] = (0, 255, 0) # 整区域赋值
-
向量化操作:
python
# 替代循环的向量化操作 img[:, :, 0] = 0 # 批量设置蓝色通道为 0
-
GPU 加速:
python
# 启用 GPU(需 OpenCV 编译时支持) net.setPreferableBackend(cv2.dnn.DNN_BACKEND_CUDA) net.setPreferableTarget(cv2.dnn.DNN_TARGET_CUDA)
4.2 内存管理
操作类型 | 内存开销 | 推荐方法 |
---|---|---|
图像复制 | ★★★★★ | 使用 ROI 或 numpy 视图 |
大矩阵运算 | ★★★★☆ | 预先分配内存(np.zeros() ) |
视频帧处理 | ★★★☆☆ | 释放无用帧(del frame ) |
五、安装与环境配置
5.1 安装命令
bash
# 基础安装(主模块)
pip install opencv-python==4.8.0.76 # 稳定版# 完整安装(含 contrib 模块)
pip install opencv-contrib-python==4.8.0.76# 验证安装
python -c "import cv2; print(cv2.__version__)" # 输出版本号
5.2 环境配置(Windows)
-
添加系统环境变量:
OPENCV_DIR
:C:\PythonXX\Lib\site-packages\cv2
PATH
追加:%OPENCV_DIR%\python-XX
(如python-3.11
)
-
GPU 支持:
- 安装 CUDA 工具包(匹配显卡架构)
- 编译 OpenCV 时启用
WITH_CUDA=ON
(需从源码构建)
六、学习资源图谱
6.1 官方资源
- OpenCV Python 教程(官方权威)
- OpenCV 示例库(含 C++/Python 示例)
6.2 实战项目
-
基础项目:
- 人脸检测考勤系统(
objdetect
+highgui
) - 图像风格迁移(
imgproc
+ 卷积核)
- 人脸检测考勤系统(
-
进阶项目:
- 实时目标跟踪器(
video
+dnn
) - 3D 物体重建(
calib3d
+ 多视角图像)
- 实时目标跟踪器(
-
工业级项目:
- 缺陷检测(
imgproc
+ml
) - 自动驾驶感知(
dnn
+ 多传感器融合)
- 缺陷检测(
七、常见问题解决方案
问题现象 | 解决方案 |
---|---|
图像显示乱码(中文) | 使用 matplotlib 替代 highgui (支持中文标题):plt.title("中文标题", fontproperties="SimHei") |
视频播放卡顿 | 1. 降低分辨率:resize(frame, (640, 480)) 2. 减少 waitKey() 延迟:waitKey(1) |
特征检测内存溢出 | 限制特征数量:ORB_create(nfeatures=1000) 使用轻量级算法(ORB 替代 SIFT) |
GPU 加速失败 | 1. 确认显卡支持 CUDA 2. 安装匹配的 OpenCV 版本(含 CUDA 支持) |
八、模块扩展(高级方向)
-
生物识别:
- 指纹识别:
imgproc
(图像增强)+features2d
(细节点匹配) - 虹膜识别:
calib3d
(眼球建模)+dnn
(特征提取)
- 指纹识别:
-
医学影像:
- 病灶检测:
dnn
(U-Net 语义分割) - 3D 重建:
calib3d
(多切片配准)+stitching
(体积渲染)
- 病灶检测:
-
无人机视觉:
- 目标跟踪:
video
(光流法)+dnn
(实时检测) - 地形测绘:
calib3d
(多视几何)+stitching
(全景拼接)
- 目标跟踪:
九、总结与学习路径
plaintext
新手入门 → 掌握 core/imgproc/highgui(图像基础操作)
↓
中级进阶 → 学习 video/calib3d/features2d(视频分析与 3D 视觉)
↓
高级实战 → 精通 dnn/ml/objdetect(深度学习与目标识别)
↓
工程落地 → 结合 flann/photo/stitching(性能优化与完整方案)
推荐学习周期:
- 基础阶段(1-2 周):完成图像读写、滤波、几何变换
- 进阶阶段(2-4 周):实现目标检测、特征匹配、相机校准
- 实战阶段(4-8 周):开发完整项目(如智能监控、AR 应用)
通过此指南,开发者可快速构建 OpenCV 知识体系,从模块原理到工程实践实现全栈能力提升。建议结合 OpenCV 官方教程(每周 10 小时)与实战项目(每月 1 个完整项目)持续精进。
附录:模块速查表
模块名 | 核心功能 | 典型函数示例 | 内存复杂度 |
---|---|---|---|
core | 数据结构与基础操作 | Mat , line() , copyTo() | ★★☆ |
imgproc | 图像处理流水线 | GaussianBlur() , warpAffine() , Canny() | ★★★★ |
highgui | 交互界面 | imshow() , VideoCapture() , setMouseCallback() | ★★☆ |
video | 视频分析 | createBackgroundSubtractorMOG2() , TrackerKCF_create() | ★★★★ |
calib3d | 3D 视觉 | calibrateCamera() , solvePnP() | ★★★★★ |
features2d | 特征工程 | SIFT_create() , BFMatcher() | ★★★★☆ |
dnn | 深度学习推理 | readNetFromONNX() , forward() | ★★★★★ |
(注:内存复杂度 ★ 表示相对 CPU 内存占用,★★★★★ 为高内存需求)
此总结融合了模块原理、代码实现、性能优化与工程实践,适合从初学者到资深开发者的全阶段学习。建议配合官方文档与实战项目(如人脸检测、视频跟踪)进行巩固,逐步构建计算机视觉工程能力。
相关文章:
OpenCV 基础模块 Python 版
OpenCV 基础模块权威指南(Python 版) 一、模块全景图 plaintext OpenCV 架构 (v4.x) ├─ 核心层 │ ├─ core:基础数据结构与操作(Mat/Scalar/Point) │ └─ imgproc:图像处理流水线(滤…...
代码随想录算法训练营第十五天 | 数组 |长度最小的子数组和螺旋矩阵II
长度最小的子数组 【题目简介】 【自写数组解法】 class Solution:def minSubArrayLen(self, target: int, nums: List[int]) -> int:minLength float(inf)slow 0fast 0cur_sum nums[slow]# 终止条件:fast不能超过最大索引值while slow < fast and fas…...
C++ 入门第27天:异常处理详细讲解
往期回顾: C 入门第24天:C11 多线程基础-CSDN博客 C 入门第25天:线程池(Thread Pool)基础-CSDN博客 C 入门第26天:文件与流操作基础-CSDN博客 C 入门第27天:异常处理详细讲解 前言 在 C 开发中…...
Powershell WSL导出导入ubuntu22.04.5子系统
导出Linux子系统 导出位置在C盘下,根据自己的实际情况更改即可Write-Host "export ubuntu22.04.5" -ForegroundColor Green wsl --export Ubuntu-22.04 c:\Ubuntu-22.04.tar 导入Linux子系统 好处是目录可用在任意磁盘路径,便于迁移不同的设备之间Write-Host &quo…...
中文文献去哪里查找,个人下载知网、万方、维普文献途径
国内三大知识库知网、万方、维普是查找中文文献常用数据库,本文将以实例演示个人下载这三个数据库文献的途径及过程。 先说下途径: 获取知网、万方、维普数据库资源可去文献党下载器网站: 使用方法: 在文献党下载器官网下载安装…...
玩转C#函数:参数、返回值与游戏中的攻击逻辑封装
Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...
简易shell
自主实现shell done,故意写成,表示先赋值,再判断,分割之后,strtok会返回NULL,刚好让gArgv最后一个元素是NULL,并且while判断结束 Makefile 1 myshell:myshell.c …...
注意力机制,本质上是在做什么?
本文以自注意机制为例,输入一个4*4的矩阵 如下: input_datatorch.tensor([[1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16] ],dtypetorch.float) 得到Q和K的转置如下。 此时,计算QK^T ,得到如下结果 第一行第一个位置就是第一条样本和第…...
【机器学习-模型评估】
“评估”已建立的模型 在进行回归和分类时,为了进行预测,定义了预测函数fθ(x) 然后根据训练数据求出了预测函数的参数θ(即对目标函数进行微分,然后求出参数更新表达式的操作) 之前求出参数更新表达式之后就结束了。但是,其实我…...
19681 01背包
19681 01背包 ⭐️难度:中等 🌟考点:动态规划、01背包 📖 📚 import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner;public class Main {static int N 10001…...
Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量回归预测
Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量回归预测 目录 Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量回归预…...
基于CAMEL 的Workforce 实现多智能体协同工作系统
文章目录 一、workforce 简介1.架构设计2.通信机制 二、workforce 工作流程图示例1.用户角色2.工作流程 三、workforce 中重要函数说明1.__init__函数2.add_single_agent_worker 函数3.add_role_playing_worker 函数4.add_workforce 函数 四、基于workforce实现多智能体协调&am…...
炫酷的3D按钮效果实现 - CSS3高级特性应用
炫酷的3D按钮效果实现 - CSS3高级特性应用 这里写目录标题 炫酷的3D按钮效果实现 - CSS3高级特性应用项目介绍核心技术实现1. 基础结构设计2. 视觉效果实现2.1 背景渐变2.2 立体感营造 3. 交互动效设计3.1 悬停效果3.2 按压效果 技术要点分析1. 深度层次感2. 动画过渡3. 性能优…...
AI视频是否会影响原创价值
AI视频是否会影响原创价值 AI视频带来全民创意对原创内容的影响 随着AI技术的发展,AI视频技术在视频领域的影响也逐渐凸显,从自动剪辑、特效生成到基于文本或语音自动生成视频内容,这一系列的进步极大地降低了视频制作的技术门槛与成本。这种…...
代码随想录刷题day50|(回溯算法篇)131.分割回文串▲
目录 一、回溯算法基础知识 二、分割回文串思路 2.1 如何切割 2.2 判断回文 2.3 回溯三部曲 2.4 其他问题 三、相关算法题目 四、总结 一、回溯算法基础知识 详见:代码随想录刷题day46|(回溯算法篇)77.组合-CSDN博客 二、分割回文…...
SpringCloud 学习笔记3(OpenFeign)
OpenFeign 微服务之间的通信方式,通常有两种:RPC 和 HTTP。 简言之,RPC 就是像调用本地方法一样调用远程方法。 在 SpringCloud 中,默认是使用 HTTP 来进行微服务的通信,最常用的实现形式有两种: RestTem…...
Python与区块链隐私保护技术:如何在去中心化世界中保障数据安全
Python与区块链隐私保护技术:如何在去中心化世界中保障数据安全 在区块链世界里,透明性和不可篡改性是两大核心优势,但这也带来了一个悖论——如何在公开账本的同时保障用户隐私?如果你的交易记录对所有人可见,如何防止敏感信息泄露? Python 作为区块链开发中最受欢迎的…...
基于32单片机的无人机直流电机闭环调速系统设计
标题:基于32单片机的无人机直流电机闭环调速系统设计 内容:1.摘要 本文针对无人机直流电机调速需求,设计了基于32单片机的无人机直流电机闭环调速系统。背景在于无人机应用场景不断拓展,对电机调速精度和稳定性要求日益提高。目的是开发一套高精度、响应…...
QT 图表(拆线图,栏状图,饼状图 ,动态图表)
效果 折线图 // 创建折线数据系列// 创建折线系列QLineSeries *series new QLineSeries;// series->append(0, 6);// series->append(2, 4);// series->append(3, 8);// 创建图表并添加系列QChart *chart new QChart;chart->addSeries(series);chart->setTit…...
预测性维护:Ubuntu边缘计算机如何降低电梯故障率
在现代城市中,电梯作为垂直交通的重要工具,其运行状态直接关系到人们的出行安全和效率。传统的电梯监控系统往往依赖于中心化的数据处理,存在响应慢、数据量大、实时性差等问题。而边缘协议网关(Edge Protocol Gateway)…...
MyBatis plus详解
核心功能 代码生成器 它能够依据数据库表结构,自动生成涵盖实体类、Mapper 接口、Mapper XML 文件、Service 接口与实现类等在内的基础代码。开发人员只需简单配置数据库连接信息、表名以及生成代码的相关参数,即可快速生成符合项目规范的基础代码&…...
【数据挖掘】数据预处理——以鸢尾花数据集为例
数据预处理——以鸢尾花数据集为例 一、实验手册(一)实验目的(二)实验原理(三)实验环境(四)实验步骤(五)实验报告要求 二、案例代码(以鸢尾花数据…...
根据文件名称查询文件所在位置
在 Linux 中,根据文件名称查询文件所在位置主要通过命令行工具实现,以下是几种常用方法: --- ### **1. 使用 find 命令(最灵活)** find 命令可以递归搜索指定目录下的文件,支持按名称、类型、时间等条件过…...
记一次wsl2+docker无法运行的经历
前情提要 由于某个大创项目的需要和对猫娘机器人的迫切渴求(bushi 需要在电脑里面安装docker desktop。由于电脑里面安装了wsl2环境 因此决定使用wsl2dockerdesktop的方式配置docker 遇到的问题 在像往常一样安装docker desktop并且启动时 提示错误: …...
XSS介绍通关XSS-Labs靶场
目录 XSS XSS的类型 1.存储型XSS(PXSS): 2. 反射型XSS(N-PXSS): 3. DOM型XSS: 4. 突变型XSS(mXSS): 5. 通用型XSS(UXSS)&#x…...
枚举的定义及其使用
在Java中,enum(枚举)是一个特殊的类,用于表示一组常量。enum类型在Java中提供了一种类型安全的方式来定义常量,相比传统的常量(如public static final变量),它更加简洁、类型安全&am…...
[特殊字符][特殊字符][特殊字符][特殊字符][特殊字符][特殊字符]壁紙 流光染墨,碎影入梦
#Cosplay #🧚♀️Bangni邦尼🐰. #📷 穹妹 Set.01 #后期圈小程序 琼枝低垂,霜花浸透夜色,风起时,微光轻拂檐角,洒落一地星辉。远山隐于烟岚,唯余一抹青黛,勾勒出天光水…...
996引擎-接口测试:消息Tips
996引擎-接口测试:消息Tips 发送视野内广播消息 sendrefluamsg发送聊天框消息 sendmsg发送地图消息 sendmapmsg打印消息到控制台 release_print发送自定义颜色的文字信息 guildnoticemsg测试NPC参考资料发送视野内广播消息 sendrefluamsg function npc_test_onclick1(player)-…...
Redis设计与实现-底层实现
Redis底层实现 1、事件1.1 文件事件1.2 时间事件1.3 事件调度 2、Redis客户端2.1 客户端的相关属性2.2 客户端的创建与关闭2.2.1 普通客户端的创建2.2.2 普通客户端的关闭2.2.3 AOF的伪客户端2.2.4 Lua脚本的伪客户端 3、Redis服务端3.1 命令请求的执行过程3.1.1 客户端发送命令…...
acwing1295. X的因子链
题目链接:1295. X的因子链 - AcWing题库 算法:数论线性筛法求素数 x如果想要尽可能多的分为几个因子,那么就应该分成素数,因为如果是合数说明还能分。 题目要求求出①这段序列的最大长度和②最大长度序列的个数 最大长度&#x…...
练习-班级活动(map存储键值对)
问题描述 小明的老师准备组织一次班级活动。班上一共有 n 名 (n 为偶数) 同学,老师想把所有的同学进行分组,每两名同学一组。为了公平,老师给每名同学随机分配了一个 n 以内的正整数作为 id,第 i 名同学的 id 为 ai。 老师希望…...
34-三数之和
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 方法一&…...
Excel online开始支持Copilot高级数据分析:Python提供强大的数据见解
前文讲过Excel中的copilot可以直接调用Python进行高级数据分析: Copilot:Excel中的Python高级分析来了 Python in Excel高级分析:一键RFM分析 超越DeepSeek:Copilot in Excel高级数据分析原生支持Python无需安装软件 零代码、…...
【数据结构】kmp算法介绍+模板代码
目录 1.kmp算法介绍 2.应用场景 3.KMP与暴力算法比较 4.模板代码 KMP算法是一种高效的字符串匹配算法,用于在文本串中快速查找模式串的所有出现位置。其核心思想是通过预处理模式串,避免在匹配失败时进行不必要的回溯,从而将时间复杂度优…...
python关键字汇总
文章目录 1. 变量与类型相关2. 控制流相关3. 函数与类相关4. 异常处理相关5. 模块相关6. 其他 在 Python 3 里有 35 个关键字,它们各自具备特定的用途与意义 1. 变量与类型相关 True、False 意义:布尔类型的常量,分别代表逻辑真与逻辑假。示…...
六十天前端强化训练之第二十五天之组件生命周期大师级详解(Vue3 Composition API 版)
欢迎来到编程星辰海的博客讲解 看完可以给一个免费的三连吗,谢谢大佬! 目录 一、生命周期核心知识 1.1 生命周期全景图 1.2 生命周期钩子详解 1.2.1 初始化阶段 1.2.2 挂载阶段 1.2.3 更新阶段 1.2.4 卸载阶段 1.3 生命周期执行顺序 1.4 父子组…...
油候插件、idea、VsCode插件推荐(自用)
开发软件: 之前的文章: 开发必装最实用工具软件与网站 推荐一下我使用的开发工具 目前在用的 油候插件 AC-baidu-重定向优化百度搜狗谷歌必应搜索_favicon_双列 让查询变成多列,而且可以流式翻页 Github 增强 - 高速下载 github下载 TimerHo…...
R语言基于ggscitable包复现一篇3.5分的文章的连续变量交互效应(交互作用)的可视化图
交互作用效应(p for Interaction)在SCI文章中可以算是一个必杀技,几乎在高分的SCI中必出现,因为把人群分为亚组后再进行统计可以增强文章结果的可靠性,进行可视化后可以清晰的表明变量之间的关系。不仅如此,交互作用还可以使用来进…...
mac环境下chatwoot客服聊天docker本地部署+对接通义千问Qwen2.5
🚀 安装docker-desktop 🚀 定义一个.env环境变量文件docker-compose.yaml .env # Learn about the various environment variables at # https://www.chatwoot.com/docs/self-hosted/configuration/environment-variables/#rails-production-variables…...
mac上安装nvm及nvm的基本语法使用!!
种一棵树,最好是十年前,其次是现在!想要改变,从此刻开始,一切都不晚! 目录 nvm是什么?前提条件:安装homebrew如果系统已经有node版本:在mac上安装nvm:用nvm安…...
论文阅读:2024-NAACL Semstamp、2024-ACL (Findings) k-SemStamp
总目录 大模型安全相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 Semstamp: A semantic watermark with paraphrastic robustness for text generation https://aclanthology.org/2024.naacl-long.226/ k-SemStamp: A Clustering-Based Semantic Wate…...
本地JAR批量传私服
在有网络隔离的环境下,Maven项目如果没有搭建私服就得把用到的通用组件通过U盘在每个组员间拷贝来拷贝去。非常的麻烦跟低效。搭建私服,如果通用组件很多的时候手工一个一个上传更是非常的麻烦跟低效; 我就遇上这问题,跟A公司合作…...
Linux上位机开发实战(camera视频读取)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 关于linux camera,一般都是认为是mipi camera,或者是usb camera。当然不管是哪一种,底层的逻辑都是v4l2&#x…...
OpenCV图像处理基础1
OpenCV 提供了丰富的图像处理和计算机视觉功能,包括图像读取、显示、颜色空间转换、滤波、边缘检测、轮廓检测等。 本章将介绍 OpenCV 的基本概念和常用功能。 图像的表示和处理 OpenCV 通过 NumPy 数组 来表示图像数据,每个图像就是一个多维数组,其中每个元素对应图像中的…...
Python Web 框架 Django、Flask 和 FastAPI 对比
在探索 Python Web 框架时,Django、Flask 和 FastAPI 无疑是最常被提及的名字。根据我们最新的 Python 开发者调查,这三大框架继续稳坐后端 Web 开发的热门宝座。它们均为开源项目,并且与 Python 的最新版本无缝兼容。然而,面对不…...
TISAX认证注意事项的详细介绍
TISAX(Trusted Information Security Assessment Exchange)认证的注意事项犹如企业在信息安全领域航行时必须遵循的灯塔指引,至关重要且不容忽视。以下是对TISAX认证注意事项的详尽阐述: 首先,企业需深入研读并理解TI…...
JavaScript |(六)DOM事件 | 尚硅谷JavaScript基础实战
学习来源:尚硅谷JavaScript基础&实战丨JS入门到精通全套完整版 笔记来源:在这位大佬的基础上添加了一些东西,欢迎大家支持原创,大佬太棒了:JavaScript |(六)DOM事件 | 尚硅谷JavaScript基础…...
【动态规划】详解混合背包问题
目录 1. 前置文章2. 题目3. 小结 1. 前置文章 本文前置文章: 【动态规划】详解 0-1背包问题【动态规划】详解完全背包问题【动态规划】详解分组背包问题【动态规划】详解多重背包问题 下面是三种背包模式的区别: 0 - 1 背包 是说:有 n 个…...
Nodejs 项目打包部署方式
方式一:PM2 一、准备工作 确保服务器上已安装 Node.js 环境建议使用 PM2 进行进程管理(需要额外安装) 二、部署步骤 1.首先在服务器上安装 PM2(推荐): npm install -g pm22.将项目代码上传到服务器&…...
银河麒麟操作系统的上下游版本判断
以下内容摘自《银河麒麟操作系统进阶应用》一书。 几百款Linux发行版之间并不是完全独立的,绝大多数Linux发行版可以追溯到几个关键的“祖先”发行版,其中最为人熟知的包括Debian、Fedora、Slackware和Arch Linux。这些“祖先”发行版又称“原始”发行版…...