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

OpenCV相机标定与3D重建(43)用于计算矫正和重映射的变换函数initUndistortRectifyMap()的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

计算畸变矫正和校正变换映射。

该函数计算联合的畸变矫正和校正变换,并以 remap 所需的地图形式表示结果。矫正后的图像看起来像是原始图像,仿佛它是使用 cameraMatrix = newCameraMatrix 和零畸变的相机捕获的一样。对于单目相机,newCameraMatrix 通常等于 cameraMatrix,或者可以通过 getOptimalNewCameraMatrix 计算以更好地控制缩放。对于立体相机,newCameraMatrix 通常设置为由 stereoRectify 计算得到的 P1 或 P2。

此外,这个新的相机在坐标空间中的方向根据 R 不同。例如,这有助于对齐立体相机的两个头,使得两幅图像上的极线变得水平并且具有相同的 y 坐标(对于水平对齐的立体相机而言)。

该函数实际上构建了用于 remap 的逆映射算法的地图。也就是说,对于目标图像(即矫正和校正后的图像)中的每个像素 (u, v),该函数计算源图像(即来自相机的原始图像)中对应的坐标。应用以下过程:
x ← ( u − c ′ x ) / f ′ x y ← ( v − c ′ y ) / f ′ y [ X Y W ] T ← R − 1 ⋅ [ x y 1 ] T x ′ ← X / W y ′ ← Y / W r 2 ← x ′ 2 + y ′ 2 x ′ ′ ← x ′ 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 1 + k 4 r 2 + k 5 r 4 + k 6 r 6 + 2 p 1 x ′ y ′ + p 2 ( r 2 + 2 x ′ 2 ) + s 1 r 2 + s 2 r 4 y ′ ′ ← y ′ 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 1 + k 4 r 2 + k 5 r 4 + k 6 r 6 + p 1 ( r 2 + 2 y ′ 2 ) + 2 p 2 x ′ y ′ + s 3 r 2 + s 4 r 4 s [ x ′ ′ ′ y ′ ′ ′ 1 ] = [ R 33 ( τ x , τ y ) 0 − R 13 ( τ x , τ y ) 0 R 33 ( τ x , τ y ) − R 23 ( τ x , τ y ) 0 0 1 ] ⋅ R ( τ x , τ y ) ⋅ [ x ′ ′ y ′ ′ 1 ] m a p x ( u , v ) ← x ′ ′ ′ f x + c x m a p y ( u , v ) ← y ′ ′ ′ f y + c y \begin{array}{l} x \leftarrow (u - {c'}_x) / {f'}_x \\ y \leftarrow (v - {c'}_y) / {f'}_y \\ [X\,Y\,W]^T \leftarrow R^{-1} \cdot [x \, y \, 1]^T \\ x' \leftarrow X/W \\ y' \leftarrow Y/W \\ r^2 \leftarrow x'^2 + y'^2 \\ x'' \leftarrow x' \frac{1 + k_1 r^2 + k_2 r^4 + k_3 r^6}{1 + k_4 r^2 + k_5 r^4 + k_6 r^6} + 2p_1 x' y' + p_2(r^2 + 2 x'^2) + s_1 r^2 + s_2 r^4 \\ y'' \leftarrow y' \frac{1 + k_1 r^2 + k_2 r^4 + k_3 r^6}{1 + k_4 r^2 + k_5 r^4 + k_6 r^6} + p_1 (r^2 + 2 y'^2) + 2 p_2 x' y' + s_3 r^2 + s_4 r^4 \\ s \begin{bmatrix} x''' \\ y''' \\ 1 \end{bmatrix} = \begin{bmatrix} R_{33}(\tau_x, \tau_y) & 0 & -R_{13}(\tau_x, \tau_y) \\ 0 & R_{33}(\tau_x, \tau_y) & -R_{23}(\tau_x, \tau_y) \\ 0 & 0 & 1 \end{bmatrix} \cdot R(\tau_x, \tau_y) \cdot \begin{bmatrix} x'' \\ y'' \\ 1 \end{bmatrix} \\ map_x(u,v) \leftarrow x''' f_x + c_x \\ map_y(u,v) \leftarrow y''' f_y + c_y \end{array} x(ucx)/fxy(vcy)/fy[XYW]TR1[xy1]TxX/WyY/Wr2x′2+y′2x′′x1+k4r2+k5r4+k6r61+k1r2+k2r4+k3r6+2p1xy+p2(r2+2x′2)+s1r2+s2r4y′′y1+k4r2+k5r4+k6r61+k1r2+k2r4+k3r6+p1(r2+2y′2)+2p2xy+s3r2+s4r4s x′′′y′′′1 = R33(τx,τy)000R33(τx,τy)0R13(τx,τy)R23(τx,τy)1 R(τx,τy) x′′y′′1 mapx(u,v)x′′′fx+cxmapy(u,v)y′′′fy+cy

其中 (k1, k2, p1, p2[, k3[, k4, k5, k6[, s1, s2, s3, s4[, τx, τy]]]]) 是畸变系数。

对于立体相机,此函数会被调用两次:每次针对一个相机头,在 stereoRectify 之后调用,而 stereoRectify 又是在 stereoCalibrate 之后调用的。但如果立体相机未经过校准,仍然可以直接从基本矩阵使用 stereoRectifyUncalibrated 计算校正变换。对于每个相机,该函数以像素域中的单应性矩阵 H 而不是三维空间中的旋转矩阵 R 来计算校正变换。R 可以通过 H 按照以下方式计算:
R = cameraMatrix − 1 ⋅ H ⋅ cameraMatrix \texttt{R} = \texttt{cameraMatrix} ^{-1} \cdot \texttt{H} \cdot \texttt{cameraMatrix} R=cameraMatrix1HcameraMatrix
其中 cameraMatrix 可以任意选择。

函数原型


void cv::initUndistortRectifyMap	
(InputArray 	cameraMatrix,InputArray 	distCoeffs,InputArray 	R,InputArray 	newCameraMatrix,Size 	size,int 	m1type,OutputArray 	map1,OutputArray 	map2 
)		

参数

  • 参数cameraMatrix 输入相机矩阵 cameraMatrix = A = [ f x 0 c x 0 f y c y 0 0 1 ] \text{cameraMatrix} = A = \begin{bmatrix}f_x & 0 & c_x \\0 & f_y & c_y \\0 & 0 & 1\end{bmatrix} cameraMatrix=A= fx000fy0cxcy1
  • 参数distCoeffs 输入畸变系数向量 (k1, k2, p1, p2[, k3[, k4, k5, k6[, s1, s2, s3, s4[, τx, τy]]]]),包含 4、5、8、12 或 14 个元素。如果该向量为 NULL/空,则假设畸变系数为零。
  • 参数R 可选的对象空间中的校正变换(3x3 矩阵)。可以传递由 stereoRectify 计算得到的 R1 或 R2。如果该矩阵为空,则假定为单位变换。在 initUndistortRectifyMap 中,R 假设为单位矩阵。
  • 参数newCameraMatrix 新的相机矩阵 $ newCameraMatrix = A ′ = [ f x ′ 0 c x ′ 0 f y ′ c y ′ 0 0 1 ] \text{newCameraMatrix} = A' = \begin{bmatrix} f'_x & 0 & c'_x \\ 0 & f'_y & c'_y \\ 0 & 0 & 1 \end{bmatrix} newCameraMatrix=A= fx000fy0cxcy1
  • 参数size 矫正后图像的尺寸。
  • 参数m1type 第一个输出映射的类型,可以是 CV_32FC1, CV_32FC2 或 CV_16SC2,参见 convertMaps。
  • 参数map1 第一个输出映射。
  • 参数map2 第二个输出映射。

代码示例

#include <iostream>
#include <opencv2/opencv.hpp>using namespace cv;
using namespace std;int main()
{// 假设的相机矩阵和畸变系数Mat cameraMatrix = ( Mat_< double >( 3, 3 ) << 500, 0, 320, 0, 500, 240, 0, 0, 1 );Mat distCoeffs   = ( Mat_< double >( 5, 1 ) << 0.1, 0.05, -0.01, 0.005, 0 );// 假设的旋转矩阵 R 和新的相机矩阵 newCameraMatrixMat R               = Mat::eye( 3, 3, CV_64F );  // 单位矩阵作为示例Mat newCameraMatrix = cameraMatrix.clone();// 图像尺寸Size imageSize( 640, 480 );// 定义输出映射类型int m1type = CV_32FC1;// 初始化矫正映射Mat map1, map2;initUndistortRectifyMap( cameraMatrix, distCoeffs, R, newCameraMatrix, imageSize, m1type, map1, map2 );cout << "Undistortion and rectification maps created." << endl;// 使用 remap 对图像进行矫正Mat originalImage = imread( "/media/dingxin/data/study/OpenCV/sources/images/remap.png" );  // 加载原始图像if ( originalImage.empty() ){cerr << "Error: Could not open or find the image!" << endl;return -1;}Mat undistortedImage;remap( originalImage, undistortedImage, map1, map2, INTER_LINEAR );// 显示结果imshow( "Original Image", originalImage );imshow( "Undistorted Image", undistortedImage );waitKey( 0 );return 0;
}

相关文章:

OpenCV相机标定与3D重建(43)用于计算矫正和重映射的变换函数initUndistortRectifyMap()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 计算畸变矫正和校正变换映射。 该函数计算联合的畸变矫正和校正变换&#xff0c;并以 remap 所需的地图形式表示结果。矫正后的图像看起来像是原…...

运行npm install 时,卡在sill idealTree buildDeps没有反应

运行npm install 时&#xff0c;卡在sill idealTree buildDeps没有反应 原因&#xff1a; 淘宝镜像源的域名早已经过期&#xff0c;所以我们需要绑定新的镜像源。 2021 年&#xff0c;淘宝就发布了消息称&#xff0c;npm 淘宝镜像已经从 registry.npm.taobao.org 切换到了 re…...

与 Oracle Dataguard 相关的进程及作用分析

与 Oracle Dataguard 相关的进程及作用分析 目录 与 Oracle Dataguard 相关的进程及作用分析与 Oracle Dataguard 相关的进程及作用分析一、主库的进程1、LGWR 进程2、ARCH进程3、LNS 进程 二、备库的进程1、RFS 进程2、ARCH3、MRP&#xff08;Managed Recovery Process&#x…...

如何在Windows上编译OpenCV4.7.0

前言 ​ 参考&#xff1a;Win10 下编译 OpenCV 4.7.0详细全过程&#xff0c;包含xfeatures2d 这里在其基础上还出现了一些问题&#xff0c;仅供参考。 正文 一、环境 1、win10 2、cmake-gui 3、opencv4.7.0 4、VS2019 二、编译过程 1、下载需要的文件&#xff1a; 通…...

get和post有什么区别

GET和POST是HTTP协议中两种常用的请求方法&#xff0c;它们在用途、参数传递方式、缓存处理、安全性等方面存在显著差异。 以下是对GET和POST区别的详细讲解&#xff0c;并给出示例演示。 一、GET和POST的区别 用途 GET&#xff1a;主要用于获取信息&#xff0c;即进行查询操…...

STM32之CAN通讯(十一)

STM32F407 系列文章 - CAN通讯&#xff08;十一&#xff09; 目录 前言 一、CAN 二、CAN驱动电路 三、CAN软件设计 1.CAN状态初始化 2.头文件相关定义 3.接收中断服务函数 4.用户层使用 1.用户层相关定义 2.发送数据 3.接收数据 1.查询方式处理 2.中断方式处理 3…...

23.行号没有了怎么办 滚动条没有了怎么办 C#例子

新建了一个C#项目&#xff0c;发现行号没有了。 想把行号调出来&#xff0c;打开项目&#xff0c;选择工具>选项> 如下图&#xff0c;在文本编辑器的C#里有一个行号&#xff0c;打开就可以了 滚动条在这里&#xff1a;...

QT 下拉菜单设置参数 起始端口/结束端口/线程数量 端口扫描4

上篇文章QT实现 端口扫描暂停和继续功能 3-CSDN博客 双击 添加对话框类 界面设计 由于主体代码已经写完&#xff0c;只需要更改参数的获取即可 获取起始端口结束端口的输入 槽函数 给主界面类添加调用对话框类的功能 实现功能&#xff1a;点击菜单项可以弹出对话框窗体 增加槽…...

spark——RDD算子集合

目录 算子转换算子示例mapflatMapReduceByKeyfilterdistinctglomgroupBygroupByKeySortBysortByKeyunion交集intersection和差集subtractjoinpartitionBymapPartitionsample 行动算子示例ForeachPartitionForeachSaveAsTextFileCountByKeyReducefoldfirst、take、counttop、tak…...

【ArcGIS Pro二次开发实例教程】(1):图层的前置、后置

一、简介 此工具要实现的功能是&#xff1a;将内容框中当前选定的图层移到最顶层或最底层。 主要技术要点包括&#xff1a; 1、Config.daml文件设置&#xff08;UI设置&#xff09; 2、按钮的图片和位置设置 3、当前选定图层的获取 4、图层在内容列表中位置的获取和移动 …...

idea 运行 docker-compose 文件问题

我idea 连接远程docker 然后本地运行compose 文件出了问题 C:\Program Files\Docker\Docker\resources\bin\docker.exe compose -f D:\aproject\group-buy-market\suger_group_buy\docs\dev-ops\docker-compose-environment.yml -p dev-ops up -d正在准备 Docker SSH 环境…ti…...

深度学习中的正则化方法

最近看到了正则化的内容&#xff0c;发现自己对正则化的理解已经忘得差不多了&#xff0c;这里在整理一下&#xff0c;方便以后查阅。 深度学习中的正则化方法 1. L2 正则化&#xff08;L2 Regularization&#xff09;2. L1 正则化&#xff08;L1 Regularization&#xff09;3.…...

LInux单机安装Redis

1. 安装gee工具包 由于Redis是基于c语言编写的所以安装的时候需要先安装gee以及gcc的依赖,yum云用不了可以看一下这个 linux 替换yum源镜像_更换yum镜像源-CSDN博客 yum install -y gcc tcl 2. 添加redis的压缩包 3. 上传到Linux 上传到 /usr/local/src 目录、这个目录一般用于…...

kafka使用以及基于zookeeper集群搭建集群环境

一、环境介绍 zookeeper下载地址&#xff1a;https://zookeeper.apache.org/releases.html kafka下载地址&#xff1a;https://kafka.apache.org/downloads 192.168.142.129 apache-zookeeper-3.8.4-bin.tar.gz kafka_2.13-3.6.0.tgz 192.168.142.130 apache-zookee…...

深入理解 pytest_runtest_makereport:如何在 pytest 中自定义测试报告

pytest_runtest_makereport 是 pytest 系统中的一个钩子函数&#xff0c;它允许我们在测试执行时获取测试的报告信息。通过这个钩子&#xff0c;我们可以在测试运行时&#xff08;无论是成功、失败还是跳过&#xff09;对测试结果进一步处理&#xff0c;比如记录日志、添加自定…...

嵌入式技术之Linux(Ubuntu) 一

一、Linux入门 1.硬件和操作系统以及用户的关系 一个传感器&#xff0c;获得数据后&#xff0c;需要向服务器发送数据。传感器传数据给上位机。 上位机需要一个程序来接收数据&#xff0c;那么这个上位机是什么机器&#xff1f; 我们的笔记本电脑就可以当成上位机。 两个手…...

VB.NET CRC32 校验

在 VB.NET 中实现 CRC32 校验并在校验失败时退出程序&#xff0c;你可以按照以下步骤进行&#xff1a; ‌实现 CRC32 计算函数‌&#xff1a;首先&#xff0c;你需要一个函数来计算给定数据的 CRC32 值。 ‌比较计算的 CRC32 值‌&#xff1a;然后&#xff0c;你需要将计算出的…...

iOS - 弱引用表(Weak Reference Table)

1. 基本数据结构 // 弱引用表的基本结构 struct weak_table_t {weak_entry_t *weak_entries; // 保存所有的弱引用对象size_t num_entries; // 当前存储的弱引用数量uintptr_t mask; // 哈希表大小掩码uintptr_t max_hash_displacement; /…...

Taro地图组件和小程序定位

在 Taro 中使用腾讯地图 1.首先在项目配置文件 project.config.json 中添加权限&#xff1a; {"permission": {"scope.userLocation": {"desc": "你的位置信息将用于小程序位置接口的效果展示"}} }2.在 app.config.ts 中配置&#x…...

汇编实现函数调用

x86_64 通过将函数参数存放在栈中的方式来实现参数传递。 # PURPOSE: Program to illustrate how functions work # This program will compute the value of # 2^3 5^2 ## Everything in the main program is stored in registers, # so the data section…...

C#—Task异步的常用方法及TaskFactory工厂类详解

Task异步的常用方法 C# 中的 Task 类是 System.Threading.Tasks 命名空间的一部分&#xff0c;用于表示异步操作。 以下是一些常用的 Task 类方法&#xff1a; 一、Task.Run(Action action): 此静态方法用于在后台运行一个新任务&#xff0c;并返回与该任务关联的 Task 实例…...

JAVA | 通过自定义注解与AOP防止接口重复提交

关注&#xff1a;CodingTechWork 引言 在Web应用开发中&#xff0c;特别是在处理表单提交或API调用时&#xff0c;可能会遇到用户因网络延迟、按钮多次点击等原因导致的重复提交问题。为了解决这一问题&#xff0c;通常的做法是在前端禁用提交按钮&#xff0c;或者在后端使用唯…...

从零手写实现redis(四)添加监听器

1、删除监听器 /*** 删除监听器接口** author binbin.hou* since 0.0.6* param <K> key* param <V> value*/ public interface ICacheRemoveListener<K,V> {/*** 监听* param context 上下文* since 0.0.6*/void listen(final ICacheRemoveListenerContext&…...

Spring Boot项目中使用单一动态SQL方法可能带来的问题

1. 查询计划缓存的影响 深入分析 数据库系统通常会对常量SQL语句进行编译并缓存其执行计划以提高性能。对于动态生成的SQL语句&#xff0c;由于每次构建的SQL字符串可能不同&#xff0c;这会导致查询计划无法被有效利用&#xff0c;从而需要重新解析、优化和编译&#xff0c;…...

51单片机——中断(重点)

学习51单片机的重点及难点主要有中断、定时器、串口等内容&#xff0c;这部分内容一定要认真掌握&#xff0c;这部分没有学好就不能说学会了51单片机 1、中断系统 1.1 概念 中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的&#xff0c;中断功能的存在&#…...

MySQL insert or update方式性能比较

MySQL中&#xff0c;有如下两种方式&#xff0c;哪种方式比较好&#xff1f; 1、先使用enterprise_id字段查询数据表&#xff0c;如果表中存在记录&#xff0c;则更新记录&#xff1b;如果不存在&#xff0c;则插入记录&#xff1b; 2、使用“INSERT INTO XXX ON DUPLICATE K…...

Linux下常用命令

本文以笔记的形式记录Linux下常用命令。 注1&#xff1a;限于研究水平&#xff0c;阐述难免不当&#xff0c;欢迎批评指正。 注2&#xff1a;文章内容会不定期更新。 一、Ubuntu 添加账号 useradd -m -s /bin/bash -d /home/newuser newuser:newuser passwd newuser 二、 Ce…...

计算机网络、嵌入式等常见问题简答

1.嵌入式系统中经常要用到无限循环&#xff0c;如何用C编写死循环 答&#xff1a;while(1){}或者for(;;) 2.程序的局部变量存在于哪里&#xff0c;全局变量存在于哪里&#xff0c;动态申请数据存在于哪里。 答&#xff1a;程序的局部变量存在于栈区&#xff1b;全局变量存在…...

嵌入式中QT实现文本与线程控制方法

第一:利用QT进行文件读写实现 利用QT进行读写文本的时候进行读写,读取MP3歌词的文本,对这个文件进行读写操作。 实例代码,利用Qfile,对文件进行读写。 //读取对应文件文件,头文件的实现。 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #incl…...

141.环形链表 142.环形链表II

141.环形链表 & 142.环形链表II 141.环形链表 思路&#xff1a;快慢指针 or 哈希表 快慢指针代码&#xff1a; class Solution { public:bool hasCycle(ListNode *head) {if(headnullptr||head->nextnullptr)return false;ListNode *fasthead->next; //不能设置成…...

计算机网络掩码、最小地址、最大地址计算、IP地址个数

一、必备知识 1.无分类地址IPV4地址网络前缀主机号 2.每个IPV4地址由32位二进制数组成 3. /15这个地址表示网络前缀有15位&#xff0c;那么主机号32-1517位。 4.IP地址的个数&#xff1a;2**n (n表示主机号的位数) 5.可用&#xff08;可分配&#xff09;IP地址个数&#x…...

第3章——HTTP报文内的HTTP信息

第3章——HTTP报文内的HTTP信息 HTTP报文 ​ 用于HTTP协议交互的信息被称为HTTP报文&#xff0c;分为请求报文和响应报文。分为Head&#xff0c;Body 结构&#xff1a; 请求行&#xff1a;包含用于请求的方法&#xff0c;请求URI和HTTP版本。 状态行&#xff1a;包含表明响应…...

Minio-Linux-安装

文章目录 1.Linux安装1.下载源码包2.上传到/usr/local/minio1.进入目录2.上传 3.开放执行权限4.创建minio文件存储目录及日志目录5.编写启动的shell脚本1.脚本编写2.赋予执行权限 6.启动&#xff01;1.执行run脚本2.查看日志3.开放9001和9000端口1.服务器2.安全组3.访问&#x…...

面试高阶问题:对称加密与非对称加密的原理及其应用场景

目录 第一章 对称加密原理及算法实现 第二章 非对称加密原理及算法实现 第三章 对称加密与非对称加密的应用场景 第四章 对称加密与非对称加密的应用实例 第五章 对称加密与非对称加密的对比分析 第一章 对称加密原理及算法实现 1.1 对称加密的原理 对称加密,又称私钥加密…...

报错 - decord 在 macOS Silicon 安装失败

问题&#xff1a;在 macOS M2 上 pip 安装 decord 出错&#xff1a; ERROR: Could not find a version that satisfies the requirement decord (from versions: none) ERROR: No matching distribution found for decord使用 decord 源码编译&#xff0c;make 也会出很多问题 …...

英伟达 RTX 5090 显卡赋能医疗大模型:变革、挑战与展望

一、英伟达 RTX 5090 与 RTX 4090 技术参数对比 1.1 核心架构与制程工艺 在探讨英伟达 RTX 4090 与 RTX 5090 的差异时&#xff0c;核心架构与制程工艺无疑是最为关键的基础要素&#xff0c;它们从根本上决定了两款显卡的性能上限与应用潜力。 1.1.1 核心架构差异 RTX 4090…...

PyCharm简单调试

本文简单讲述一下PyCharm中经常用到的调试操作。 示例代码如下&#xff1a; for i in range(10):print("hello", i)if i > 2:print("ok!")在代码前面打上断点&#xff0c;如下图所示&#xff1a; 单机调试按钮Debug 单机Resume Program按钮&#xf…...

快速入门Spring Cloud Alibaba,轻松玩转微服务

​ 1 快速入门Spring Cloud Alibaba&#xff0c;轻松玩转微服务 1.1 架构 架构图&#xff1a; 1.2 项目结构 1.2.1 系统框架版本 版本适配查看&#xff1a;https://sca.aliyun.com/docs/2023/overview/version-explain/ Spring Boot Version &#xff1a;3.2.4 Spring Clo…...

浅尝Appium自动化框架

浅尝Appium自动化框架 Appium自动化框架介绍Appium原理Appium使用安装平台驱动 Appium自动化框架介绍 Appium 是一个开源的自动化测试框架&#xff0c;最初设计用于移动应用的测试&#xff0c;但现在它也扩展了对桌面端应用的支持。Appium 使得自动化测试变得更加简单&#xf…...

poi-tl+kkviewfile实现生成pdf业务报告

需求背景&#xff0c;需要把ai生成的一些业务数据&#xff0c;生成一份pdf报告 需求分析 简单来说&#xff0c;就是json生成pdf的方案。 直接生成pdf。适合一些pdf样式简单的场景&#xff0c;一般就是纯文本按序渲染&#xff0c;或者是纯表格。如果需要一些复杂的排布&#x…...

python导入模块失败

运行下面代码模块&#xff0c;出现报错&#xff0c;导入模块失败 import torch from layers.Embed import DataEmbedding from layers.Conv_Blocks import Inception_Block_V1 将你自己的目录添加到 sys.path&#xff0c;假设你的目录位置是D://winhzq//桌面//pydemo//…...

Vulkan 学习(12)---- Vulkan pipeline 创建

目录 Vulkan 渲染管线顶点输入阶段输入装配阶段顶点着色器阶段细分控制、评估着色器阶段(可选)几何着色器阶段(可选)图元装配阶段光栅化阶段片段着色器片段测试阶段混合阶段 Vulkan 渲染管线 渲染管线可以看作是一条生产流水线&#xff0c;定义了从输入顶点到输出图像的所有步…...

BloombergGPT: A Large Language Model for Finance——面向金融领域的大语言模型

这篇文章介绍了BloombergGPT&#xff0c;一个专门为金融领域设计的大语言模型&#xff08;LLM&#xff09;。以下是文章的主要内容总结&#xff1a; 背景与动机&#xff1a; 大语言模型&#xff08;如GPT-3&#xff09;在多个任务上表现出色&#xff0c;但尚未有针对金融领域的…...

来说数据库

什么是数据库&#xff1f; 是部署在操作系统上&#xff0c;把数据按一定的数据模型组织、永久存储&#xff0c;并可以被用户共享的软件系统。 其实数据库&#xff0c;可以理解为&#xff0c;把数据都存成文件&#xff0c;有很多的文件和很多的目录&#xff0c;不好管理&#xf…...

教程:从pycharm基于anaconda构建机器学习环境并运行第一个 Python 文件

1. 安装 PyCharm 访问 PyCharm 官方网站&#xff1a;https://www.jetbrains.com/pycharm/。下载社区版&#xff08;免费&#xff09;或专业版&#xff08;收费&#xff0c;提供更多功能&#xff09;。按照操作系统的安装指导安装 PyCharm。安装后打开 PyCharm&#xff0c;并根…...

嵌入式驱动开发详解11(INPUT子系统)

文章目录 前言input子系统简介主要结构体API函数input子系统驱动框架上报事件后续设备树配置方式参考文献 前言 按键、鼠标、键盘、触摸屏等都属于输入(input)设备&#xff0c;Linux 内核为此专门做了一个叫做 input 子系统的框架来处理输入事件。输入设备本质上还是字符设备&…...

动态规划解决目标和问题

代码随想录链接:代码随想录 思路: 可以将数组分为两部分&#xff0c;其中一部分记作left&#xff0c;其中数字的符号全为,而另外一部分记作right&#xff0c;其中数字的符号全为-。这里全为-的意思不是真正的符号为-&#xff0c;而表示这一堆数字在计算时取值为负 因此有如下…...

【漏洞分析】UDF提权漏洞——CVE-2016-6662-MySQL ‘malloc_lib’变量重写命令执行

0x00 前言 最近在做渗透笔记&#xff0c;其中有一个靶机在getshell后&#xff0c;需要进行提权。发现靶机使用root启动的mysql服务&#xff0c;那么尝试使用UDF提权。于是在提权成功后&#xff0c;花了一天时间特意搜了一下整个UDF提权的漏洞原理和利用&#xff0c;加深理解。…...

特种设备安全管理人员免费题库限时练习(判断题)

56.(判断题)特别重大事故、重大事故、较大事故和一般事故,负责事故调查的人民政府应当自收到事故调查报告之日起15日内做出批复。 A.正确 B.错误 答案:错误 57.(判断题)每一类事故灾难的应急救援措施可能千差万别,因此其基本应急模式是不一致的。 A.正确 B.错误 答案:错…...

linux-25 文件管理(三)复制、移动文件,cp,mv

命令cp是copy的简写&#xff0c;而mv则是move的简写。那既然copy是用于实现复制文件的&#xff0c;那通常一般我们要指定其要复制的是谁&#xff1f;而且复制完以后保存在什么地方&#xff0c;对吧&#xff1f;那因此它的使用格式很简单&#xff0c;那就是cp srcfile dest&…...