相对位姿的一种表示方法是刚体变换(旋转矩阵和平移向量)。在做位姿估计或三维重建相关任务时,为了更直观的理解和判断算法的过程和结果,需要把相对位姿可视化。博主了解和学习了两种位姿可视化方法,分别是调用matlab showExtrinsic函数和调用opencv viz模块(需要编译VTK库)。

目录

1.opencv viz模块编译(联合编译contrib和vtk)

2.相对位姿表示

3.代码

1.opencv viz模块编译(联合编译contrib和vtk)

首先下载opencv4.x及其对应的contrib模块(建议用opencv4以上,其viz模块在contrib模块中)。然后下载vtk库。博主vtk库是用vcpkg一键下载的,但是后续联合编译遇到了很多bug,应该是博主对cmake和vcpkg使用还不熟练。在vcpkg安装路径下shift和右键打开powershell。键入  vcpkg install VTK:x64-windows --recurse 。这里从官网vtk下载和cmake编译是一样。编译好vtk后,编译opencv cotrib viz。用cmake编译,主要注意三个点:

1.with_VTK一定要勾选 2.build_viz一定要勾选 3.OPENCV_EXTRA_MODULES_PATH选择contrib源码下module所在的路径。

生成解决方案后,检查modules下有没有viz模块,有就可以进行最后一步生成库了;如果没有说明前面3步出了问题,重新configure一下

解决方案下的modules模块

viz模块

2.相对位姿表示

用刚体变换(旋转矩阵和平移向量)表示如下;右边X=[X,Y,Z]表示坐标系1下3D点坐标,左边X'=[X',Y',Z']表示同名3D点在坐标系2下的坐标。但是为了可视化两个坐标系间的相对位姿,直接用这里的R和T是不行的。(博主认为,3D点的刚体变换,和可视化坐标系刚体变换是相逆的)

将上式写成等价的其次坐标形式,使得整个变换为乘法形式。

经常我们可以得到上述变换A,但是位姿可视化需要上述的逆变换,也就是inv(A).

3.代码

首先是matlab。博主用之前matlab 张正友标定的相机参数。

showExtrinsics(stereoParams2)

接下来我们把同样的参数导入到C++ opencv viz模块

matlab获取的旋转变量

  void test(){cv::Matx33d r;cv::Vec3d t;r <<0.965187427746172, 0.00676895643700972, -0.261471624750146,-0.00517875663081780, 0.999963671140472, 0.00677029386577335,0.261507953608463, -0.00518050461094595, 0.965187418365723;t << -432.087309575979/432, - 9.19798126882100 / 432, 39.9247425340855 / 432;r = r.t(); cv::viz::Viz3d myWindow("Coordinate Frame");cv::Vec3d cam1_pose(0, 0, 0), cam1_focalPoint(0, 0, 1000), cam1_y_dir(0, 1, 0); cv::Affine3d cam_init_pose = cv::viz::makeCameraPose(cam1_pose, cam1_focalPoint,         cam1_y_dir); myWindow.showWidget("World_coordinate", cv::viz::WCoordinateSystem(), cam_init_pose); cv::Affine3d transpose1(r, t);transpose1 = transpose1.inv();myWindow.showWidget("Cam0", cv::viz::WCoordinateSystem(), transpose1);myWindow.spin();}

这里需要主要r=r.t()是因为matlab双目标定工具箱中获取旋转矩阵是从2相机到1相机下的R,转置后才是从1到2的R。以及最后transpose1.inv()是之前提到的将变换取逆变才是要可视化的坐标系变换。

rgb分别是xyz轴

最后得到的可视化结果,rgb分别表示xyz轴(viz自带设定),这样看,和上面matlab的外参显示相同。至此,用C++ opencv viz成功将获得的刚体变换可视化出来了。

C++ opencv viz位姿可视化相关推荐

  1. 基于OpenCV的位姿估计

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 今天我们的目标是找出我们相对于球场上的位置,从而了解我们在比赛中的 ...

  2. viz::viz3d报错_我可以在Excel中获得该Viz吗?

    viz::viz3d报错 Have you ever found yourself in the following situation? 您是否遇到以下情况? Your team has been ...

  3. 三维空间刚体运动5:详解SLAM中显示机器人运动轨迹及相机位姿(原理流程)

    三维空间刚体运动5:详解SLAM中显示机器人运动轨迹及相机位姿(原理流程) 一.显示运动轨迹原理讲解 二.前期准备 三.git管理子模块及克隆源代码 1.学习使用Git Submodule 2.克隆源 ...

  4. 【计算机视觉】OpenCV实现单目相机标定

    文章目录 单目相机标定(基于Python OpenCV) 1.上期填坑 2.单目相机标定 2.1 数据采集 2.2 角点提取 2.3 参数求解 2.4 参数评估(重投影误差) 2.5 相机位姿(棋盘位 ...

  5. 再次升级,985博士整理的71个OpenCV实战项目教程开放下载!

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 近期小白学视觉公众号推出了多篇Python+OpenCV实战项目的 ...

  6. 重磅升级,52个Python+OpenCV实战项目教你掌握图像处理

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 近期小白学视觉公众号推出了多篇Python+OpenCV实战项目的 ...

  7. opencv 叠加两张图_「干货」教你如何用OpenCV快速寻找图像差异处

    如何使用结构相似性指数(SSIM)将两个图像与Python进行比较. 使用这种方法,我们能够轻松确定两个图像是否相同或由于轻微的图像处理,压缩伪像或有目的的篡改而产生差异. 今天我们将扩展SSIM方法 ...

  8. OPENCV密集光流计算calcOpticalFlowFarneback原论文《Two-Frame Motion Estimation Based on Polynomial Expansion》讲解

    最近在看光流计算的相关方法. 最开始复现了几个借助深度学习的方法,导师建议看几篇传统方法. 正好发现opencv自带了稀疏光流与密集光流的函数,于是研究了一下. 在网上查资料的时候发现有关密集光流函数 ...

  9. OpenCV快速寻找图像差异

    如何使用结构相似性指数(SSIM)将两个图像与Python进行比较. 使用这种方法,我们能够轻松确定两个图像是否相同或由于轻微的图像处理,压缩伪像或有目的的篡改而产生差异. 今天我们将扩展SSIM方法 ...

最新文章

  1. WP8.1 Study4:WP8.1中控件集合应用
  2. 5.对象和面向对象3——类的定义
  3. MyBatis动态SQL小结
  4. MyBatis多参数传递之注解方式示例--转
  5. 问题分享:Js引用类型赋值
  6. 【流媒体服务器的搭建】2. 源码编译安装ffmpeg
  7. 【Linux】一步一步学Linux——gunzip命令(64)
  8. centos设置mysql初始l密码_CentOS 7下安装MySQL后重置root密码方法
  9. python自带的函数有哪些_为什么说 Python 内置函数并不是万能的?
  10. plsql 快捷键设置
  11. java自定义注解annotation记录操作日志
  12. 2016宁波计算机程序复赛,宁波第31届中小学生计算机程序设计竞赛复赛试题小学组.PDF...
  13. JVM 堆内存设置原理
  14. 案例:需求问题的解决方案
  15. 7 Object类型
  16. python3 输出内容格式化
  17. 通过ssh登陆linux后使用vim时按了ctrl+s
  18. 后端开发面试自我介绍_前端开发面试自我介绍
  19. 计算机科技论文写作题目,科技论文写作应注意的几个问题 | 科研动力
  20. 华为太极magisk安装教程_怎么升级Magisk到最新19.4版本-正确刷入Magisk,获取ROOT教程...

热门文章

  1. 3Dcnn 降假阳性模型调试(一)
  2. java中函数编程的妙用
  3. 支持DoH的DNS服务器,使用 Docker 自建支持 DoH、DoT 的 DNS 服务器
  4. 最新钣金设备制造公司网站模板源码+手机端+后台
  5. 靠本事整塌,靠苦逼重搭
  6. 论文写作总结-论文写作前需要注意的事
  7. 步进电机驱动之相数、步距角、细分、拍数
  8. Ubuntu 20.04.5安装无线网卡RTL8821CE驱动
  9. Django 教程之数据库模型
  10. java开发环境搭建教程