【Python】旋转矩阵与旋转向量的相互转换(OpenCV)

这篇具有很好参考价值的文章主要介绍了【Python】旋转矩阵与旋转向量的相互转换(OpenCV)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引言

因为任意旋转矩阵仅有 3 个自由度,因此旋转向量是旋转矩阵的一个方便和最紧凑的表示。在全局 3D 几何优化中常用到旋转矩阵和旋转向量的相互转换,例如相机标定、PnP 问题的求解等。本文介绍基于 OpenCV-Python 的互转换实现方法。

方法

Rodrigues()
void cv::Rodrigues(InputArray 	src,
                   OutputArray 	dst,
                   OutputArray 	jacobian = noArray() 
                  )		
Python:
	cv.Rodrigues(src[, dst[, jacobian]]) ->	dst, jacobian

参数详解

  • src:输入旋转向量(3x1 或 1x3)或旋转矩阵(3x3);
  • dst:输出旋转矩阵(3x3)或旋转向量(3x1 或 1x3);
  • jacobian:可选输出,雅可比矩阵,3x9 或 9x3,它是输出数组分量相对于输入数组分量的偏导数矩阵。

实验

通过 OpenCV 提供的 Rodrigues 函数即可实现旋转矩阵与旋转向量的相互转换。

  • R_vec:表示旋转向量;
  • R_mat:表示旋转矩阵。

旋转向量➡旋转矩阵

>>> import numpy as np
>>> import cv2 as cv
>>> R_vec = np.array([[0.1], [0.1], [0.1]])
>>> R_mat = cv.Rodrigues(R_vec)[0]
>>> R_mat
array([[ 0.99002498, -0.09451324,  0.10448826],
       [ 0.10448826,  0.99002498, -0.09451324],
       [-0.09451324,  0.10448826,  0.99002498]])

旋转矩阵➡旋转向量

>>> import numpy as np
>>> import cv2 as cv
>>> R_mat = np.array([
...        [ 0.99002498, -0.09451324,  0.10448826],
...        [ 0.10448826,  0.99002498, -0.09451324],
...        [-0.09451324,  0.10448826,  0.99002498]])
>>> R_vec = cv.Rodrigues(R_mat)[0]
>>> R_vec
array([[0.1],
       [0.1],
       [0.1]])

参考

OpenCV: Camera Calibration and 3D Recongtruction文章来源地址https://www.toymoban.com/news/detail-517344.html

到了这里,关于【Python】旋转矩阵与旋转向量的相互转换(OpenCV)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 四元数,欧拉角和旋转矩阵相互转换

    打印输出: 在线转换网站:1、三维在线旋转变换网站 https://www.andre-gaschler.com/rotationconverter/ 2、 Rotation Conversion Tool https://danceswithcode.net/engineeringnotes/quaternions/conversion_tool.html 3、角度、弧度在线转换工具 https://www.osgeo.cn/app/sc210 参考链接:https://www.jianshu.com/p/4fda4c34b829 https://

    2024年02月14日
    浏览(30)
  • python 根据两个向量,求的之间的旋转矩阵:

    项目遇到一个问题,就是需要根据 原始向量 和 目标向量 求他们两个之间的 旋转矩阵 ,网上结果很少,也有很多错误,因此写了一个,项目中使用过程没出现问题。         原理参考的是知乎大佬的对   Rodrigues\\\' rotation formula  和 知乎 的总结,主要如下:

    2024年02月13日
    浏览(27)
  • 转换矩阵、平移矩阵、旋转矩阵关系以及python实现旋转矩阵、四元数、欧拉角之间转换

    由于在平时总是或多或少的遇到平移旋转的问题,每次都是现查资料,然后查了忘,忘了继续查,这次弄明白之后干脆写一篇文章,给人方便同时于己方便,后续如有扩充或变动也方便添加。 假设有两个向量 a 1 = ( x 1 , y 1 , z 1 ) a_1 = (x_1, y_1, z_1) a 1 ​ = ( x 1 ​ , y 1 ​ , z 1 ​

    2024年02月03日
    浏览(67)
  • 将欧拉角转换为旋转矩阵(手眼标定)python版本

    1、欧拉角版 2、四元数版 3、旋转矩阵版本 4、齐次矩阵

    2024年02月16日
    浏览(33)
  • Python Opencv实践 - 图像旋转

     

    2024年02月13日
    浏览(34)
  • python学习笔记——矩阵跟向量间的转换

    2、向量转矩阵:reshape() 可以将一维数据转为多维数据

    2024年02月16日
    浏览(29)
  • Python OpenCV 图像旋转:实现图像的随意旋转

    Python OpenCV 图像旋转:实现图像的随意旋转 在数字图像处理中,图像旋转是常见的一种图像几何变换操作。利用图像旋转,我们可以将图片进行任意角度的旋转,并且保持图像内容不失真。Python 中的 OpenCV 库提供了丰富的图像处理 API,包括了图像旋转操作。本文将介绍利用

    2024年02月12日
    浏览(29)
  • rgb与hsi空间详解及其相互转化(python+opencv)

    效果图: 原图----------- rgb-hsi ----------- 加入噪声后hsi-rgb 实现代码: rgb图片到hsi图片并加入噪声的相互转化 对于单色(灰度)图像而言,其每个像素的亮度用一个数值表示即可;而彩色图像的每个像素包含了颜色信息,每个像素的光强度和色度须用3个数值描述。彩色图像的

    2024年02月05日
    浏览(32)
  • NumPy图像格式相互转换:使用OpenCV

    在图像处理和计算机视觉领域,NumPy和OpenCV是两个非常常用的Python库。NumPy提供了强大的多维数组操作功能,而OpenCV则提供了图像处理和计算机视觉算法的实现。在许多情况下,我们需要在这两个库之间进行图像格式的相互转换。本文将介绍如何使用OpenCV在NumPy数组和OpenCV图像

    2024年02月03日
    浏览(26)
  • 如何在OpenCV Python中旋转图像?

    OpenCV提供了函数  cv.rotate()  以90度的倍数旋转图像(numpy数组)。该函数可以以三种可能的方式使图像旋转:90度,180度和270度顺时针旋转。以下是语法∶ rotateCode  是一个旋转标志,指定如何旋转数组。三个旋转标志如下∶ cv2.ROTATE_90_CLOCKWISE cv2.ROTATE_180 cv2.ROTATE_90_COUNTERCLOCKWIS

    2024年02月03日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包