OpenCV相机标定与3D重建(23)用于在图像上绘制世界坐标系的三条轴函数drawFrameAxes()的使用

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

算法描述

从姿态估计绘制世界/物体坐标系的轴。
cv::drawFrameAxes 是 OpenCV 库中的一个函数,用于在图像上绘制世界坐标系的三条轴(通常为X、Y和Z轴),这有助于可视化相机的姿态或物体的位置。此函数常用于增强现实、机器人视觉、3D重建等领域,以帮助理解或调试空间关系。

函数原型

void cv::drawFrameAxes	
(InputOutputArray 	image,InputArray 	cameraMatrix,InputArray 	distCoeffs,InputArray 	rvec,InputArray 	tvec,float 	length,int 	thickness = 3 
)		

参数

  • 参数image 输入/输出图像。它必须有1或3个通道。通道数量不会被改变。
  • 参数cameraMatrix 输入的3×3 浮点数矩阵,表示相机的内参矩阵。 A = [ f x 0 c x 0 f y c y 0 0 1 ] A = \begin{bmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix} A= fx000fy0cxcy1
  • 参数distCoeffs 输入的畸变系数向量 ( k 1 , k 2 , p 1 , p 2 [ , k 3 [ , k 4 , k 5 , k 6 [ , s 1 , s 2 , s 3 , s 4 [ , τ x , τ y ] ] ] ] ) (k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6[, s_1, s_2, s_3, s_4[, \tau_x, \tau_y]]]]) (k1,k2,p1,p2[,k3[,k4,k5,k6[,s1,s2,s3,s4[,τx,τy]]]]),包含4、5、8、12或14个元素。如果该向量为空,则假设畸变为零。
  • 参数rvec 旋转向量(见 Rodrigues 公式),与 tvec 一起将模型坐标系中的点转换到相机坐标系中。
  • 参数tvec 平移向量。
  • 参数length 绘制的轴的长度,单位与 tvec 相同(通常为米)。
  • 参数thickness 绘制的轴的线宽。

此函数绘制世界/物体坐标系相对于相机坐标系的轴。OX轴用红色绘制,OY轴用绿色绘制,OZ轴用蓝色绘制。

代码示例


#include <opencv2/calib3d/calib3d.hpp>  // 确保包含了必要的头文件
#include <opencv2/opencv.hpp>using namespace cv;
using namespace std;int main()
{// 假设我们已经有了以下参数Mat cameraMatrix = ( Mat_< double >( 3, 3 ) << 400, 0, 220, 0, 400, 140, 0, 0, 1 );  // 示例相机内参矩阵Mat distCoeffs   = Mat::zeros( 5, 1, CV_64F );                                       // 假设没有畸变或已校正// 示例旋转和平移向量(实际应用中这些应该通过姿态估计获得)Vec3d rvec( 0.01, 0.02, 0.03 );  // 旋转向量Vec3d tvec( 0.1, 0.2, 0.3 );     // 平移向量// 加载一张图片作为背景Mat image = imread( "/media/dingxin/data/study/OpenCV/sources/images/line.jpg" );  // 替换为你的图像路径if ( image.empty() ){cout << "Could not open or find the image!" << endl;return -1;}// 定义轴的长度(单位与 tvec 相同,通常是米)float axis_length = 0.1;// 绘制坐标轴drawFrameAxes( image, cameraMatrix, distCoeffs, rvec, tvec, axis_length );// 显示结果图像imshow( "Image with Axes", image );waitKey( 0 );  // 按任意键退出return 0;
}

运行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/492924.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot中Controller内文件上传到本地以及阿里云

上传文件的基本操作 <form action"/upload" method"post" enctype"multipart/form-data"> <h1>登录</h1> 姓名&#xff1a;<input type"text" name"username" required><br> 年龄&#xf…

pycharm debug

Pycharm Debug功能详解 1.跳转到当前断点(断点后你为了查看逻辑可能去了其他文件或行&#xff0c;点这个就能回到当前断点的行) 2.step over&#xff08;F8快捷键&#xff09;&#xff1a;在当前层代码单步执行。例子中即左下的堆栈&#xff0c;当前是test1.py第7行的fun函数&a…

webpack处理图片资源

过去在Webpack4时&#xff0c;我们处理图片资源通过file-loader和url-loader进行处理。 现在Webpack5已经将两个Loader功能内置到Webpack里了&#xff0c;我们只需要简单配置即可处理图片资源。 1. 配置 //webpack.config.js const path require("path");module.…

PHY6239:具有高精确度AFE的无线MCU芯片,常用在智能穿戴上

PHY6239是 一个 具有高精确度AFE的无线MCU。它具有低功耗32位处理器&#xff0c;8KB保留SRAM, 32KB OTP, 64KB ROM&#xff0c;和一个超低功耗&#xff0c;高性能的蓝牙5.4/2.4G无线电。 模拟前端提供24位Σ-Δ ADC&#xff0c;蕞大ENOB 22.6位&#xff0c;具有针对精密传感器测…

在 C# 中加载图像而不锁定文件

如何在不锁定图像文件的情况下将图像加载到 C# 程序中。单击“正常加载”按钮时&#xff0c;程序将使用以下代码显示图像文件。 // Load the image normally. private void btnLoadNormally_Click(object sender, EventArgs e) {if (picSample.Image ! null) picSample.Image.…

excel 使用vlook up找出两列中不同的内容

当使用 VLOOKUP 函数时&#xff0c;您可以将其用于比较两列的内容。假设您要比较 A 列和 B 列的内容&#xff0c;并将结果显示在 C 列&#xff0c;您可以在 C1 单元格中输入以下公式&#xff1a; 这个公式将在 B 列中的每个单元格中查找是否存在于 A 列中。如果在 A 列中找不到…

【原生js案例】前端封装ajax请求及node连接 MySQL获取真实数据

上篇文章&#xff0c;我们封装了ajax方法来请求后端数据&#xff0c;这篇文章将介绍如何使用 Node.js 来连接 MySQL&#xff0c;并对数据库进行操作。 实现效果 代码实现 后端接口处理 const express require("express"); const connection require("../da…

vue预览和下载 pdf、ppt、word、excel文档,文件类型为链接或者base64格式或者文件流,

** 方法1&#xff1a;word、xls、ppt、pdf 这些文件&#xff0c; 如果预览的文件是链接可以直接打开&#xff0c;可用微软官方的预览地址 ** <iframe width"100%" :src"textVisibleURl " id"myFramePPT" style"border: none;backgroun…

跟沐神学读论文-论文阅读管理

摘要 近期有读论文的需求&#xff0c;就需要去了解一下论文到底要怎么读&#xff0c;同一个系列之间的论文如何作整理和归纳&#xff0c;之前也有了解过市面上有成熟的论文阅读工具&#xff0c;但是对于学生党来讲没什么性价比&#xff0c;在B站上看到沐神有讲解他的思路Typor…

day38-SSH安全登录

机器准备 什么是SSH SSH 或 Secure Shell 协议是一种远程管理协议&#xff0c;允许用户通过 Internet 访问、控制和修改其远程服务器。 SSH 服务是作为未加密 Telnet 的安全替代品而创建的&#xff0c;它使用加密技术来确保进出远程服务器的所有通信都以加密方式进行。 SS…

使用React构建一个掷骰子的小游戏

这是一个用 React 构建的小游戏应用&#xff0c;名为 Tenzies&#xff0c;目标是掷骰子&#xff0c;直到所有骰子的值相同。玩家可以“冻结”某些骰子&#xff0c;使它们在后续掷骰中保持不变。 1. App.jsx import Die from "../public/components/Die" import { us…

vue 文本域 展示的内容格式要和填写时保持一致

文本域 展示的内容格式要和填写时保持一致 <el-inputtype"textarea":rows"5"placeholder"请输入内容"v-model"formCredit.point"style"width:1010px;" > </el-input> 样式加个&#xff1a; white-space: pre-w…

[Linux] 信号保存与处理

&#x1fa90;&#x1fa90;&#x1fa90;欢迎来到程序员餐厅&#x1f4ab;&#x1f4ab;&#x1f4ab; 主厨&#xff1a;邪王真眼 主厨的主页&#xff1a;Chef‘s blog 所属专栏&#xff1a;青果大战linux 总有光环在陨落&#xff0c;总有新星在闪烁 信号的保存 下面的概…

【Axure高保真原型】伸缩表单

今天和大家分享伸缩表单的原型模板&#xff0c;效果包括在需要填写内容较多时&#xff0c;可以对填写内容进行分类&#xff0c;然后通过点击上下箭头&#xff0c;收起或展开对应的信息。这个模版里面包含了输入框、下拉列表、选择器、上次图片共多种种常用的元件&#xff0c;后…

InternVL简读

InternVL: Scaling up Vision Foundation Models and Aligning for Generic Visual-Linguistic Tasks 1. Introduction 需要解决的问题&#xff1a; existing VLLMs [5, 81, 131, 177, 187] commonly employ lightweight “glue” layers, such as QFormer [81] or linear pr…

从源码分析swift GCD_DispatchGroup

前言&#xff1a; 最近在写需求的时候用到了DispatchGroup&#xff0c;一直没有深入去学习&#xff0c;既然遇到了那么就总结下吧。。。。 基本介绍&#xff1a; 任务组&#xff08;DispatchGroup&#xff09; DispatchGroup 可以将多个任务组合在一起并且监听它们的完成状态。…

AFL-Fuzz 的使用

AFL-Fuzz 的使用 一、工具二、有源码测试三、无源码测试 一、工具 建议安装LLVM并使用afl-clang-fast或afl-clang-lto进行编译&#xff0c;这些工具提供了更现代和高效的插桩技术。您可以按照以下步骤安装LLVM和afl-clang-fast&#xff1a; sudo apt update sudo apt install…

ONES 功能上新|ONES Copilot、ONES Wiki 新功能一览

ONES Copilot 可基于工作项的标题、描述、属性信息&#xff0c;对工作项产生的动态和评论生成总结。 针对不同类型的工作项&#xff0c;总结输出的内容有对应的侧重点。 应用场景&#xff1a; 在一些流程步骤复杂、上下游参与成员角色丰富的场景中&#xff0c;工作项动态往往会…

EasyGBS国标GB28181平台P2P远程访问故障排查指南:客户端角度的排查思路

在现代视频监控系统中&#xff0c;P2P&#xff08;点对点&#xff09;技术因其便捷性和高效性而被广泛应用。然而&#xff0c;当用户在使用P2P远程访问时遇到设备不在线或无法访问的问题时&#xff0c;有效的排查方法显得尤为重要。本文将从客户端的角度出发&#xff0c;详细探…

Soul Android端稳定性背后的那些事

前言&#xff1a;移动应用的稳定性对于用户体验和产品商业价值都有着至关重要的作用。应用崩溃会导致关键业务中断、用户留存率下降、品牌口碑变差、生命周期价值下降等影响&#xff0c;甚至会导致用户流失。因此&#xff0c;稳定性是APP质量构建体系中最基本和最关键的一环。当…