【计算机视觉】图像的几何变换
最常见的几何变换有仿射变换和单应性变换两种,最常用的仿射变换有缩放、翻转、旋转、平移。
1. 缩放
将图像放大或缩小会得到新的图像,但是多出的像素点如何实现----插值
1.1 插值方法
最近邻插值
双线性插值
cv2.resize()
是 OpenCV 中用于调整图像大小的函数。它可以将图像缩放到指定尺寸,或按照比例进行缩放,是图像处理任务中非常常用的功能之一。
cv2.resize(src, dsize, dst=None, fx=0, fy=0, interpolation=cv2.INTER_LINEAR)
参数详解
-
src
(必选):- 输入图像,数据类型为 NumPy 数组。
- 形状可以是灰度图 (
H x W
) 或彩色图 (H x W x C
)。
-
dsize
(必选):- 输出图像的目标尺寸,格式为
(width, height)
。 - 如果提供了
dsize
,则会忽略fx
和fy
参数。
- 输出图像的目标尺寸,格式为
-
dst
(可选):- 输出图像(默认为
None
)。 - 通常不使用这个参数,返回值即为调整后的图像。
- 输出图像(默认为
-
fx
和fy
(可选):- 分别表示图像在宽度方向 (
x
) 和高度方向 (y
) 的缩放因子。 - 如果设置了
fx
和fy
,会按照比例缩放图像,忽略dsize
。
- 分别表示图像在宽度方向 (
-
interpolation
(可选):- 插值方法,用于在缩放过程中生成新像素值。常见选项有:
cv2.INTER_NEAREST
: 最近邻插值,速度快,质量较差。cv2.INTER_LINEAR
: 双线性插值(默认),适用于缩小图像。cv2.INTER_CUBIC
: 双三次插值,适用于放大图像,质量较高但速度较慢。cv2.INTER_LANCZOS4
: Lanczos 插值,适用于高质量缩放。cv2.INTER_AREA
: 使用像素区域关系插值,适用于缩小图像,效果较好。
- 插值方法,用于在缩放过程中生成新像素值。常见选项有:
返回值
- 返回调整大小后的图像,数据类型与输入图像相同。
2. 翻转、旋转和平移
2.1 翻转
图像的翻转是指以某条线为轴进行翻转图像得到一副新的图像,新的图像与原始图像关于翻转轴对称。
cv2.flip()
是 OpenCV 提供的一个图像翻转函数,用于按照指定的轴对图像进行镜像翻转操作。通过这个函数,可以实现水平翻转、垂直翻转或同时进行水平和垂直翻转。
cv2.flip(src, flipCode)
参数详解
-
src
(必选):- 输入图像,数据类型为 NumPy 数组。
- 可以是灰度图(
H x W
)或彩色图(H x W x C
)。
-
flipCode
(必选):- 控制图像的翻转方向,值的取值意义如下:
0
: 沿 x 轴(垂直翻转) 翻转。1
: 沿 y 轴(水平翻转) 翻转。-1
: 同时沿 x 轴和 y 轴(中心对称翻转) 翻转。
- 控制图像的翻转方向,值的取值意义如下:
返回值
- 返回翻转后的图像,数据类型和形状与输入图像一致。
2.2 旋转
图像的旋转是指以某一点为旋转中心旋转图像得到一副新的图像。
2.3 平移
图像的平移是指图像沿着平面内的某一方向移动一定距离得到一副新的图像。
3. 仿射变换
图像的仿射变换是将图像进行一系列的线性变换(缩放、旋转、错切)和平移变换得到新图像的操作;新图像保留了原始图像点的共线性以及线之间的平行线、线段间的长度比
cv2.warpAffine()
是 OpenCV 中用于对图像进行仿射变换的函数,可以实现平移、旋转、缩放等操作。以下是函数的详解。
cv2.warpAffine(src, M, dsize, dst=None, flags=cv2.INTER_LINEAR, borderMode=cv2.BORDER_CONSTANT, borderValue=0)
参数详解
-
src
输入图像,通常是一个二维灰度图或三维彩色图像(numpy.ndarray
格式)。 -
M
仿射变换矩阵(2x3 矩阵)。这是图像变换的核心参数,定义了如何操作图像的像素点位置。- 仿射变换可以表示为:
- 仿射变换可以表示为:
-
dsize
输出图像的尺寸,格式为(width, height)
。- 决定了输出图像的大小。
-
dst
(可选)
输出的目标图像,通常省略。 -
flags
插值方法,用于计算目标像素值。常见选项:cv2.INTER_NEAREST
:最近邻插值(速度最快,质量较低)。cv2.INTER_LINEAR
:双线性插值(默认,平衡速度和质量)。cv2.INTER_CUBIC
:三次插值(质量较高,但速度慢)。cv2.INTER_LANCZOS4
:Lanczos 插值(用于缩小图像时效果最好)。
-
borderMode
(可选)
定义边界像素的处理方式。常见选项:cv2.BORDER_CONSTANT
:填充常量值(默认)。cv2.BORDER_REPLICATE
:复制边缘像素。cv2.BORDER_REFLECT
:反射边界。
-
borderValue
(可选)
当borderMode
为cv2.BORDER_CONSTANT
时,定义填充边界的值。默认是0
,即黑色。
实例代码
以下是使用 cv2.warpAffine
函数实现平移、旋转和缩放操作的 Python 代码示例。我们将通过设置不同的仿射变换矩阵实现这些操作。
完整代码示例
import cv2
import numpy as np# 读取图像
image = cv2.imread("example.jpg")
(h, w) = image.shape[:2]# 显示原始图像
cv2.imshow("Original Image", image)# --- 平移操作 ---
# 平移矩阵: 将图像向右平移 50 像素,向下平移 30 像素
tx, ty = 50, 30
translation_matrix = np.array([[1, 0, tx], [0, 1, ty]], dtype=np.float32)# 使用 warpAffine 应用平移
translated_image = cv2.warpAffine(image, translation_matrix, (w, h))
cv2.imshow("Translated Image", translated_image)# --- 旋转操作 ---
# 定义旋转中心、角度和缩放比例
center = (w // 2, h // 2)
angle = 45 # 顺时针旋转 45 度
scale = 1.0# 生成旋转矩阵
rotation_matrix = cv2.getRotationMatrix2D(center, angle, scale)# 使用 warpAffine 应用旋转
rotated_image = cv2.warpAffine(image, rotation_matrix, (w, h))
cv2.imshow("Rotated Image", rotated_image)# --- 缩放操作 ---
# 缩放矩阵: 将图像横向和纵向分别缩放到原来的 1.5 倍
sx, sy = 1.5, 1.5
scaling_matrix = np.array([[sx, 0, 0], [0, sy, 0]], dtype=np.float32)# 计算缩放后的尺寸
scaled_width = int(w * sx)
scaled_height = int(h * sy)# 使用 warpAffine 应用缩放
scaled_image = cv2.warpAffine(image, scaling_matrix, (scaled_width, scaled_height))
cv2.imshow("Scaled Image", scaled_image)# --- 组合操作: 平移 + 旋转 + 缩放 ---
# 创建一个综合仿射变换矩阵
combined_matrix = np.dot(rotation_matrix, scaling_matrix)
combined_matrix[:, 2] += np.array([tx, ty]) # 加入平移分量# 计算最终图像尺寸
new_width = int(scaled_width)
new_height = int(scaled_height)# 应用综合仿射变换
combined_image = cv2.warpAffine(image, combined_matrix, (new_width, new_height))
cv2.imshow("Combined Transformation Image", combined_image)# 等待按键并释放窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
代码说明
-
平移操作
仿射变换矩阵:
M translation = [ 1 0 t x 0 1 t y ] M_{\text{translation}} = \begin{bmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \end{bmatrix} Mtranslation=[1001txty]
将图像在 x 和 y 方向上分别平移t_x
和t_y
个像素。 -
旋转操作
使用cv2.getRotationMatrix2D
生成旋转矩阵,旋转角度和中心点可以自定义。 -
缩放操作
仿射变换矩阵:
M scaling = [ s x 0 0 0 s y 0 ] M_{\text{scaling}} = \begin{bmatrix} s_x & 0 & 0 \\ 0 & s_y & 0 \end{bmatrix} Mscaling=[sx00sy00]
s_x
和s_y
分别是 x 和 y 方向上的缩放比例。 -
组合操作
- 通过矩阵乘法 (
np.dot
) 将多个变换矩阵合并。 - 调整矩阵偏移量(第 3 列)以同时实现平移。
- 通过矩阵乘法 (
运行结果
- Translated Image:图像被平移。
- Rotated Image:图像被旋转。
- Scaled Image:图像被缩放。
- Combined Transformation Image:图像被平移、旋转和缩放的组合效果。
4. 单应性变换
图像的仿射变换保留了原始图像点的共线性以及线之间的平行线、线段间的长度比;但是单应性变换,只保留了共线性。广泛应用于图像校正、全景拼接、图像配准、机器人导航、增强现实领域。
cv2.findHomography
是 OpenCV 中用于计算 单应性矩阵(Homography Matrix)的函数,常用于图像配准(Image Registration)、透视变换(Perspective Transformation)等场景。它可以通过一组点对应关系计算出两幅图像之间的几何变换。
retval, H = cv2.findHomography(srcPoints, dstPoints, method=cv2.RANSAC, ransacReprojThreshold=3.0, mask=None, maxIters=2000, confidence=0.995)
参数详解
-
srcPoints
- 类型:
numpy.ndarray
或 类似的可迭代对象,形状为 (N \times 2) 或 (N \times 1 \times 2)。 - 描述:源点集合(图像1中的点坐标)。
这些点是已知的特征点,用于计算单应性矩阵。
- 类型:
-
dstPoints
- 类型:与
srcPoints
相同。 - 描述:目标点集合(图像2中的点坐标)。
每个源点在目标图像中的对应点。
- 类型:与
-
method
(可选)- 类型:整数(用于指定计算方法)。
- 描述:选择计算单应性矩阵的方法。
cv2.RANSAC
(默认):使用随机抽样一致性算法(RANSAC),可排除异常点。cv2.LMEDS
:最小中值算法(Least Median of Squares),对异常值更鲁棒。cv2.RHO
:一种优化方法,适合数据分布较好的情况。
-
ransacReprojThreshold
(仅当使用 RANSAC 方法时生效)- 类型:浮点数。
- 描述:RANSAC 中的重投影误差阈值(以像素为单位)。小于此值的点被视为内点。
-
mask
(可选)- 类型:布尔掩码,
numpy.ndarray
。 - 描述:用于标记内点和外点的输出掩码。
- 内点(符合几何关系的点)标记为
1
。 - 外点(不符合几何关系的点)标记为
0
。
- 内点(符合几何关系的点)标记为
- 类型:布尔掩码,
-
maxIters
(仅在 RANSAC 方法中可用)- 类型:整数。
- 描述:RANSAC 最大迭代次数。
-
confidence
(仅在 RANSAC 方法中可用)- 类型:浮点数,范围为
[0, 1]
。 - 描述:单应性矩阵估计的置信度。
- 类型:浮点数,范围为
返回值
-
retval
- 类型:布尔值。
- 描述:计算是否成功。
-
H
- 类型:3x3 单应性矩阵。
- 描述:定义了两个平面之间的透视关系,表示从源图像到目标图像的映射。
示例 1:计算单应性矩阵
import cv2
import numpy as np# 定义源点和目标点
src_points = np.array([[10, 10], [200, 10], [200, 200], [10, 200]], dtype=np.float32)
dst_points = np.array([[20, 30], [220, 50], [210, 220], [30, 230]], dtype=np.float32)# 计算单应性矩阵
H, mask = cv2.findHomography(src_points, dst_points, method=cv2.RANSAC)print("Homography Matrix:")
print(H)
print("Mask of inliers:")
print(mask)
示例 2:图像透视变换
import cv2
import numpy as np# 读取图像
image = cv2.imread("example.jpg")
(h, w) = image.shape[:2]# 定义源点和目标点
src_points = np.array([[100, 100], [400, 100], [400, 400], [100, 400]], dtype=np.float32)
dst_points = np.array([[50, 150], [450, 100], [400, 450], [100, 400]], dtype=np.float32)# 计算单应性矩阵
H, _ = cv2.findHomography(src_points, dst_points)# 应用透视变换
warped_image = cv2.warpPerspective(image, H, (w, h))# 显示结果
cv2.imshow("Original Image", image)
cv2.imshow("Warped Image", warped_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
相关文章:
【计算机视觉】图像的几何变换
最常见的几何变换有仿射变换和单应性变换两种,最常用的仿射变换有缩放、翻转、旋转、平移。 1. 缩放 将图像放大或缩小会得到新的图像,但是多出的像素点如何实现----插值 1.1 插值方法 最近邻插值 双线性插值 cv2.resize() 是 OpenCV 中用于调整图像…...
IS-IS四
目录 点到点中LSP(类似LSA)的同步过程 注意LSP只有(1类LSA和2类LSA) 查看详细信息:display isis lsdb 0000.0000.0001.00-00 verbose 开摸: ISIS的伪节点LSP(类似LSA)没有路由信息 L1路由器的路由计算…...
CODA 离线安装及虚幻镜迁移
1、离线安装 1.1 下载Miniconda安装脚本 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh1.2 添加权限 chmod x Miniconda3-latest-Linux-x86_64.sh1.3 执行安装 ./Miniconda3-latest-Linux-x86_64.sh遇到问题,一路回车即可 1.4 …...
【Rive】混合动画
1 混合动画简介 【Rive】动画 中介绍了 Rive 中动画的基础概念和一般动画的制作流程,本文将介绍混合动画的基础概念和一般制作流程。Unity 中混合动画介绍详见→ 【Unity3D】动画混合。 混合动画是指同一时刻多个动画按照一定比例同时执行,这些动画控制的…...
软件体系结构复习-02 软件体系结构定位及构建
软件体系结构复习-02 软件体系结构定位及构建 原文链接:《软件体系结构复习-02 软件体系结构定位及构建》 目录 软件体系结构复习-02 软件体系结构定位及构建 1 什么是软件体系结构 2 软件生命周期中的软件体系结构 2.1 生命周期 2.2 定位与作用 1 规划和需求…...
MySQL-SQL语句
文章目录 一. SQL语句介绍二. SQL语句分类1. 数据定义语言:简称DDL(Data Definition Language)2. 数据操作语言:简称DML(Data Manipulation Language)3. 数据查询语言:简称DQL(Data Query Language)4. 数据控制语言:简称DCL(Data …...
Windows版Docker上不了网怎么办?
1、判断你的config文件、daemon文件的位置。 docker info命令输入, buildx: Docker Buildx (Docker Inc.) Version: v0.17.1-desktop.1 Path: C:\Users\AAA\.docker\cli-plugins\docker-buildx.exe 这个是你电脑这些文件的位置,修改linu…...
Zabbix监控Oracle 19c数据库完整配置指南
Zabbix监控Oracle 19c数据库完整配置指南 本文将详细介绍如何使用Zabbix配置Oracle 19c数据库监控,包括安装、配置、问题排查等全过程。本指南适合新手独立完成配置。 1. 环境准备 1.1 系统要求 Oracle 19c数据库服务器Zabbix服务器(版本5.0或更高&a…...
解决 Maven 部署中的 Artifact 覆盖问题:实战经验分享20241204
🛠️ 解决 Maven 部署中的 Artifact 覆盖问题:实战经验分享 📌 引言 在软件开发过程中,持续集成和持续部署(CI/CD)是提高开发效率和代码质量的关键手段。Hudson 和 Maven 是两种广泛使用的工具࿰…...
mb108里opengl相关
linux/linuxgdi.cpp里CreateWindowExW的 g_signal_connect(self->m_glArea, "render", G_CALLBACK(onRenderGlTextures), self); 绑定了一个渲染事件回调。 另外有 g_signal_connect(self->m_glArea, "realize", G_CALLBACK(onRealizeGlTextures)…...
使用docker让项目持续开发和部署
大多人选择开发时在本地,部署时文件都在容器里,如果没有容器,那就本地开发,没有映射文件,如果部署环境到容器了,容器内部启动时设置执行命令,再将映射的文件进行编译,这就直接能实现…...
数据结构-查找
数据结构——二叉树先序、中序、后序及层次四种遍历(C语言版)_中序遍历-CSDN博客...
2030. gitLab A仓同步到B仓
文章目录 1 A 仓库备份 到 B 仓库2 B 仓库修改main分支的权限 1 A 仓库备份 到 B 仓库 #!/bin/bash# 定义变量 REPO_DIR"/home/xhome/opt/git_sync/zz_xx_xx" # 替换为你的本地库A的实际路径 REMOTE_ORIGIN"http://192.168.1.66:8181/zzkj_software/zz_xx_xx.…...
Ubuntu防火墙管理(五)——ufw源规则解读与修改
firewalld与nftables 在 /etc/firewalld/firewalld.conf 文件中,FirewallBackend 选项用于指定 Firewalld 使用的防火墙后端实现。具体来说: nftables:这是当前的默认选项,表示 Firewalld 将使用 nftables 作为防火墙后端。nftab…...
Flink+Paimon实时数据湖仓实践分享
随着 Paimon 近两年的推广普及,使用 FlinkPaimon 构建数据湖仓的实践也越来越多。在 Flink 实时数据开发中,对于依赖大量状态 state 的场景,如长周期的累加指标计算、回撤长历史数据并更新等,使用实时数仓作为中间存储来代替 Flin…...
全面解析DApp开发中的智能合约设计
在DApp的开发过程中,智能合约的设计起到了至关重要的作用。智能合约是运行在区块链上的程序,负责处理和执行DApp中的逻辑、交易和数据存储。下面我们将深入探讨智能合约的设计原则、挑战和优化方法,帮助开发者掌握如何设计高效、安全的智能合…...
强化学习新突破:情节记忆与奖励机制引领多智能体协作
简介 本推文介绍了韩国科学技术院发表在人工智能顶会ICLR 2024上的论文《Efficient Episodic Memory Utilization of Cooperative Multi-Agent Reinforcement Learning》。该论文提出创新性高效情节记忆利用(Efficient Episodic Memory Utilization,EMU…...
VUE3学习二
教程视频 【尚硅谷Vue3入门到实战,最新版vue3TypeScript前端开发教程】https://www.bilibili.com/video/BV1Za4y1r7KE?p67&vd_sourcef1bd3b5218c30adf0a002c8c937e0a27 零 环境搭建 学习环境 windows10node 18vue3 创建项目 npm create vuelatest 选项中…...
MySQL Group Replication
参考文档: https://dev.mysql.com/doc/refman/8.4/en/group-replication-configuring-instances.html MySQL版本: mysql> select version(); ----------- | version() | ----------- | 8.4.3 | ----------- 1 row in set (0.00 sec)mysql> …...
设计模式学习思路二
设计模式的学习思路_设计模式必须按顺序进行吗-CSDN博客 以下是一些方法和思路可以帮助你更清晰地识别使用了哪种设计模式。 1. 确定模式时的思考步骤 以下是分析代码时,你可以遵循的一些思路和步骤,帮助你识别可能使用的设计模式: a. 识别…...
MySql 笔记
drop database if exists school; create database school default charset utf8; -- 切换到数据库school use school; -- 创建学生表 drop table if exists tb_student; create table tb_student ( stuid int not null comment 学号, stuname varchar(20) not null comment 姓…...
【Qt】QTableView选中行发生变化时触发的信号
问题 QTableView选中的行发生变化时,使用的信号是QTableView的selectionModel()里的currentChanged信号,界面点击行来回切换,发现怎么也触发不了? 原因 信号槽连接放在了QTableView数据初始化前面,这时候QTableView…...
qt图像合成模式分析
文章目录 定义含义示例分析CompositionMode_ClearCompositionMode_SourceCompositionMode_DestinationCompositionMode_SourceOverCompositionMode_DestinationOverCompositionMode_SourceInCompositionMode_DestinationInCompositionMode_SourceOutCompositionMode_Destinatio…...
http与https的区别
加密方式: 加密技术是对信息进行编码和解码的技术,编码是把原来可读信息(又称明文)译成代码形式(又称密文),其逆过程就是解码(解密),加密技术的要点是加密算…...
Pyside6 --Qt Designer--Qt设计师--了解+运行ui_demo_1.py
目录 一、打开Qt设计师1.1 Terminal终端1.2 打开env,GUI虚拟环境下的scripts文件1.3 不常用文件介绍(Scripts下面) 二、了解Qt设计师的各个控件作用2.1 点击widget看看效果!2.2 点击Main Window看看效果 三、编写一个简易的UI代码…...
11.17【大数据】Hadoop【DEBUG】
列出hdfs文件系统所有的目录和文件 主节点上 子结点 是一样的 *为什么能登进 slave 02 的主机,但是 master 当中依然显示 slave 02 为 DeadNode?* hadoop坏死节点的重启_hadoop3 子节点重启-CSDN博客 注意hadoop-daemon.sh 实际上位于 Hadoop 的 sbin 目录中,而不…...
MQ:kafka-消费者的三种语义
文章目录 前言(一) 创建topic(二) 生产者(三)消费者1. At-most-once Kafka Consumer2. At-least-once kafka consumer3. 使用subscribe实现Exactly-once4. 使用assign实现Exactly-once 前言 本文主要是以kafka 09的client为例子,详解kafka c…...
QT 线程锁
在 Qt 中,线程锁是用来同步多线程访问共享资源的机制,防止数据竞争和线程安全问题。Qt 提供了几种线程锁和同步工具,主要包括以下几种: 1. QMutex 功能:QMutex 是 Qt 中最常用的互斥锁(mutex)…...
C++中protobuf Message与JSON的互相转换
C中protobuf Message与JSON的互相转换 环境: protobuf: v27.3(2024-08-01) abseil: 20240722.0文章目录 C中protobuf Message与JSON的互相转换前言1. 编写通讯录addressbook.proto2. 编译3. C中测试protobuf与json的转换4. 结果 前言 PB转JSON:Protoc…...
Milvus向量数据库03-搜索理论
Milvus向量数据库03-搜索理论 1-ANN搜索 通过 k-最近邻(kNN)搜索可以找到一个查询向量的 k 个最近向量。kNN 算法将查询向量与向量空间中的每个向量进行比较,直到出现 k 个完全匹配的结果。尽管 kNN 搜索可以确保准确性,但十分耗…...
qt QCryptographicHash详解
1、概述 QCryptographicHash是Qt框架中提供的一个类,用于实现加密散列函数,即哈希函数。哈希函数能够将任意长度的数据转换为固定长度的哈希值,也称为散列值或数据指纹。这个哈希值通常用于数据的完整性校验、密码存储等场景。QCryptographi…...
【论文阅读】具身人工智能(Embodied AI)综述:连接数字与物理世界的桥梁
摘要 具身人工智能(Embodied AI)对于实现通用人工智能(AGI)至关重要,是连接数字世界与物理世界的各类应用的基础。近年来,多模态大模型(MLMs)和世界模型(WMs)…...
使用el-row和el-col混合table设计栅格化,实现表头自适应宽度,表格高度占位
演示效果: 如上图,由于地址信息很长,需要占多个格子,所以需要错开,若想实现这种混合效果,可以这样搭建: 页面效果: 代码分析: 上面使用el-row和el-col搭建表单显示 第一排三个8,第二排8和16 下面混合table实现,并使用border来自适应宽度…...
MQ的基本概念
1 MQ的基本概念 RabbitMQ是一个开源的消息代理和队列服务器,它使用Erlang语言编写并运行在多种操作系统上,如Linux、Windows等。RabbitMQ可以接收、存储和转发消息(也称为“事件”)到连接的客户端。它适用于多种场景,…...
基于协同过滤的图书推荐系统 爬虫分析可视化【源码+文档】
【1】系统介绍 研究背景 随着互联网的普及和电子商务的发展,用户可以在线获取大量的图书资源。然而,面对海量的信息,用户往往难以找到自己真正感兴趣的书籍。同时,对于在线书店或图书馆等提供图书服务的平台来说,如何…...
Kruskal 算法在特定边权重条件下的性能分析及其实现
引言 Kruskal 算法是一种用于求解最小生成树(Minimum Spanning Tree, MST)的经典算法。它通过逐步添加权重最小的边来构建最小生成树,同时确保不会形成环路。在本文中,我们将探讨在特定边权重条件下 Kruskal 算法的性能,并分别给出伪代码和 C 语言实现。特别是,我们将分…...
【Pandas】pandas from_dummies
Pandas2.2 General Data manipulations 方法描述melt(frame[, id_vars, value_vars, var_name, …])将多个列的值转换为行形式pivot(data, *, columns[, index, values])将长格式的数据转化为宽格式pivot_table(data[, values, index, columns, …])用于创建数据透视表&#…...
【信息系统项目管理师】第8章:项目整合管理过程详解
文章目录 一、制定项目章程1、输入2、工具和技术3、输出 二、制订项目管理计划1、输入2、工具和技术3、输出 三、指导与管理项目工作1、输入2、工具和技术3、输出 四、管理项目知识1、输入2、工具和技术3、输出 五、监控项目工作1、输入2、工具和技术3、输出 六、实施整体变更控…...
从变更到通知:使用Python和MongoDB Change Streams实现即时事件监听
MongoDB提供了一种强大的功能,称为Change Streams,它允许应用程序监听数据库中的变更事件,并在数据发生变化时立即做出响应。这在mysql数据库是不具备没有这个功能的。又如:我们在支付环节想一直监听支付回调的状态,就…...
vue3+elementPlus封装的数据过滤区
目录结构 源码 index.vue <template><el-form class"mb-5" :rules"rules" :model"queryForm" ref"queryDOM" label-width"80"><el-row :gutter"20"><slot></slot><el-col cla…...
PHP RabbitMQ连接超时问题
问题背景 Error: The connection timed out after 3 sec while awaiting incoming data 看到这个报错,我不以为意,认为是我设置的超时时间不够导致的,那就设置长一点 Error: The connection timed out after 300 sec while awaiting incom…...
SpringMvc完整知识点二(完结)
SpringMVC获取请求参数 环境准备工作等均省略,可详见快速入门,此处只写非共有部分代码 该部分示例项目SpringMvcThree已上传至Gitee,可自行下载 客户端请求参数的格式为:namevalue&passwordvalue... ... 服务端想要获取请求…...
WebSocket 通信说明与基于 ESP-IDF 的 WebSocket 使用
一、 WebSocket 出现的背景 最开始 客户端(Client) 和 服务器(Server) 通信使用的是 HTTP 协议,HTTP 协议有一个的缺陷为:通信只能由客户端(Client)发起。 在一些场景下࿰…...
UE5 Compile Plugins | Rebuild from Source Manually | Unreal Engine | Tutorial
Step 1 Open Engine Folder H:\UE5\UE_5.3\Engine\Build\BatchFiles Step 2 Hold "Shift""Mouse Right Click"in Empty Area Step 3 Select "Open PowerShell window here .\RunUAT.bat BuildPlugin -plugin"H:\projects\MetaHuman光照2\plu…...
深度解析 Ansible:核心组件、配置、Playbook 全流程与 YAML 奥秘(下)
文章目录 六、playbook运行playbook方式Playbook VS ShellScripts忽略错误 ignore_errorshandlers和notify结合使用触发条件playbook中tags的使用playbook中变量的使用invertory参数模板templates迭代与条件判断迭代:with_items迭代嵌套子变量roles 六、playbook 运…...
langchain chroma 与 chromadb笔记
chromadb可独立使用也可搭配langchain 框架使用。 环境: python 3.9 langchain0.2.16 chromadb0.5.3 chromadb 使用示例 import chromadb from chromadb.config import Settings from chromadb.utils import embedding_functions# 加载embedding模型 en_embeddin…...
04 创建一个属于爬虫的主虚拟环境
文章目录 回顾conda常用指令创建一个爬虫虚拟主环境Win R 调出终端查看当前conda的虚拟环境创建 spider_base 的虚拟环境安装完成查看环境是否存在 为 pycharm 配置创建的爬虫主虚拟环境选一个盘符来存储之后学习所写的爬虫文件用 pycharm 打开创建的文件夹pycharm 配置解释器…...
xcode开发相关英语单词
创建项目: otheraudio unit extension app音频单元扩展应用程序generic kernel extension通用内核扩展installer plug-in安装程序插件instruments package仪器包iokit driveriokit驱动程序presence pane状态窗格screen saver屏幕保护程序...
etcd-v3.5release-(2)-STM
a.b.c表示a文件里的b类的方法c,注意a不一定是包名,因为文件名不一定等于包名 !!!!etcd在put的过程中使用的batchTxBuffered,这个事务是写bbolt数据库使用的事务,是对bbolt.Tx的一个…...
多系统萎缩锻炼如何好起来?
多系统萎缩(Multiple System Atrophy, MSA)是一种复杂的神经系统退行性疾病,影响着患者的自主神经系统、运动系统和平衡功能等多个方面。面对这一挑战,科学、合理的锻炼对于缓解症状、提高生活质量至关重要。本文将详细介绍多系统…...