罗德里格斯公式推导,以及如何使用cv2.Rodrigues进行旋转矩阵和旋转向量之间的相互转化

  • 1 罗德里格斯公式推导
  • 2 cv2.Rodrigues进行旋转矩阵和旋转向量之间的相互转化

1 罗德里格斯公式推导

  • 参考:https://blog.csdn.net/qq_22235957/article/details/80461290 # 维基百科翻译
  • 参考:https://blog.csdn.net/q583956932/article/details/78933245
  • 参考:https://blog.csdn.net/weixin_41855010/article/details/108208331
  • 参考:https://blog.csdn.net/qq_40475529/article/details/89409303

在三维空间中,旋转矩阵R 可以对坐标系(基向量组)进行刚性的旋转变换:

R=[rxxrxyrxzryxryyryzrzxrzyrzz]R=\left[\begin{array}{lll} r_{x x} & r_{x y} & r_{x z} \\ r_{y x} & r_{y y} & r_{y z} \\ r_{z x} & r_{z y} & r_{z z} \end{array}\right] R=⎣⎡​rxx​ryx​rzx​​rxy​ryy​rzy​​rxz​ryz​rzz​​⎦⎤​

2 cv2.Rodrigues进行旋转矩阵和旋转向量之间的相互转化

我们在使用retval, rvec, tvec = cv2.solvePnP(objp, imgp, K, D_0, flags=cv2.SOLVEPNP_ITERATIVE)会计算得到一个旋转向量rvec,但是我们通常需要把这个旋转向量转换为旋转矩阵

而opencv内置的cv.Rodrigues()函数可以进行将:

  • 旋转向量转换为旋转矩阵
  • 或把旋转矩阵转换为旋转向量

1、Rodrigues(src[, dst[, jacobian]]) -> dst, jacobian

  • 输入src:旋转向量((3,1)或者(1,3))或者旋转矩阵(3,3);
  • 输出dst:旋转矩阵(3,3)或者旋转向量((3,1)或者(1,3));
  • 输出jacobin:可选项,输出雅克比矩阵(3x9或者9x3),输入数组对输出数组的偏导数。

2、代码

import cv2
import numpy as npextrinsic = np.array([[0.05812254, 0.9969995, 0.05112498, 0.043909],[-0.02821786, -0.04955038, 0.99837293, -0.026862],[0.99791058, -0.05947061, 0.02525319, -0.006717],[0., 0., 0., 1.]])
rot_mat = extrinsic[:3, :3]
print(f"rot_mat:\n {rot_mat}")# 把旋转矩阵转化为旋转向量
rvec, _ = cv2.Rodrigues(rot_mat)
print(f"rvec:\n {rvec}")# 把旋转向量转换为旋转矩阵
rot_mat, _ = cv2.Rodrigues(rvec)
print(f"rot_mat:\n {rot_mat}")

输出结果如下:

rot_mat:[[ 0.05812254  0.9969995   0.05112498][-0.02821786 -0.04955038  0.99837293][ 0.99791058 -0.05947061  0.02525319]]
rvec:[[-1.25346463][-1.12186936][-1.21480507]]
rot_mat:[[ 0.05812254  0.9969995   0.05112498][-0.02821786 -0.04955038  0.99837293][ 0.99791058 -0.05947061  0.02525319]]

注意:

使用cv.Rodrigues旋转矩阵转换为旋转向量,这个旋转向量并不是欧拉角,因此通过这个旋转矩阵和我们用欧拉角转换得到的旋转矩阵也是有区别的!!!!

罗德里格斯公式推导,以及如何使用cv2.Rodrigues进行旋转矩阵和旋转向量之间的相互转化相关推荐

  1. [转] 罗德里格斯公式推导,以及如何使用cv2.Rodrigues进行旋转矩阵和旋转向量之间的相互转化

    罗德里格斯公式推导,以及如何使用cv2.Rodrigues进行旋转矩阵和旋转向量之间的相互转化 1 罗德里格斯公式推导 2 cv2.Rodrigues进行旋转矩阵和旋转向量之间的相互转化 1 罗德里格 ...

  2. 详解基于罗德里格斯(Rodrigues)公式由旋转向量到旋转矩阵的 Python 实现

    文章目录 旋转向量 rotation vector 旋转矩阵 rotation matrix 罗德里格斯公式 Rodrigues' formula 基于 Python 和 NumPy 实现 Rodri ...

  3. 旋转矩阵及旋转向量相互转化 Rodrigues矩阵及matlab实现

    处理三维旋转问题时,通常采用旋转矩阵的方式来描述.一个向量乘以旋转矩阵等价于向量以某种方式进行旋转.除了采用旋转矩阵描述外,还可以用旋转向量来描述旋转,旋转向量的长度(模)表示绕轴逆时针旋转的角度(弧 ...

  4. 旋转向量与欧拉角 罗德里格斯公式(Rodrigues's Formula)

    旋转向量 旋转矩阵表达方式 旋转矩阵描述旋转,变换矩阵描述一个6自由度的三维刚体运动.但存在如下缺点: SO(3)的旋转矩阵有9个量,但一次旋转只有3个自由度.因此这种表达方式是冗余的.同理,变换矩阵 ...

  5. 三维旋转四元数系列(2.三维旋转之轴角与罗德里格斯公式推导)

    序:上两节我们介绍了复数的基本概念与性质,以及复数与二维旋转的关系. 三维旋转四元数系列(0.复数基本介绍)https://blog.csdn.net/SKANK911/article/details ...

  6. 三维空间刚体运动2:旋转向量与罗德里格斯公式(最详细推导)

    三维空间刚体运动2:旋转向量与罗德里格斯公式(最详推导) 1.旋转向量定义 2.罗德里格斯公式-向量转换为矩阵 2.1 定义 2.2 推导 2.2.1 推导一 2.2.2 推导二 2.2.3 推导向量 ...

  7. 罗德里格斯(Rodrigues)旋转向量与矩阵的变换

    在做双目立体视觉深度图像生成的时候,遇到旋转向量(1x3)与旋转矩阵(3x3)的概念,得知二者可以通过罗德里格斯相互转化. 1.旋转的表示 处理三维旋转问题时,通常采用旋转矩阵的方式来描述旋转变换.旋 ...

  8. python 实现罗德里格斯公式Rodrigues 旋转向量到旋转矩阵转化

    罗德里格斯公式Rodrigues: 代码: import numpy as npdef rodrigues_rotation(r, theta):# n旋转轴[3x1]# theta为旋转角度# 旋转 ...

  9. 罗德里格斯公式推导(轴角与旋转矩阵的关系)以及四元数与旋转向量、旋转矩阵、欧拉角之间的转换关系

    罗德里格斯公式推导(轴角与旋转矩阵的关系) 意义:罗德里格斯公式表示旋转向量到旋转矩阵之间爱你的转换关系 旋转向量:一个向量,方向与旋转轴一致,长度等于旋转角度 空间中任意旋转都可以用一个旋转轴和一个 ...

最新文章

  1. VirtualBox32位系统上安装64位系统
  2. java什么是局部变量,什么是java的局部变量,成员变量,全局变量?
  3. 基于用例点来度量软件规模并管理进度 之二
  4. Libra教程之:执行Transactions
  5. c++代码健壮性_复活Navex-使用图查询进行代码分析(上)
  6. 使用Visual Studio Code调试.net控制台应用程序的方法
  7. 基于phonegap,html5,ratchet,handlebars等技术的微表情APP
  8. shell 列表_Shell文本编辑之转录因子(TF)列表的获取
  9. 转:As3.0中的反射
  10. SQL Server实例的十大安全注意事项
  11. 4.Node.js 微信消息管理
  12. Ubuntu下LDAP 部署文档
  13. c语言 int操作bit,C语言,使用共用体和结构体 查看int型的bit散布
  14. 解决网页上内容不能复制的几种方法
  15. 非线性思维 -- 大前研一
  16. SEO当下的力量,你应该关注的4个属性
  17. win2003 Enterprise Edition sp2 企业版序列号
  18. 安卓入门教程(十五)- Fragment,Service,WAMP下载
  19. 腾讯反病毒实验室安全研究员杨经宇:开启IoT设备的上帝模式
  20. Bcrypt密码生成及解密工具

热门文章

  1. JavaScript 浮点数陷阱及解法
  2. 移动端微信页面的一些自己爬的坑
  3. STL初探——构造和析构的基本工具: construct()和destroy()
  4. spring mvc拦截器和mvc:annotation-driven /的详解
  5. STL:set/multiset用法详解
  6. 带你学习JQuery:事件冒泡和阻止默认行为
  7. window.location.reload() 刷新页面时,如何不弹出提示框
  8. 用python画皮卡丘源代码-实现童年宝可梦,教你用Python画一只属于自己的皮卡丘...
  9. python教学网站-python教学网站
  10. python怎么读取列表-python读入列表