Python 如何使相机旋转?(阿鲁科图书馆)

Python 如何使相机旋转?(阿鲁科图书馆),python,computer-vision,aruco,Python,Computer Vision,Aruco,我一直在试图理解下载aruco库时包含的aruco_test.cpp程序的输出 输出具有以下格式: 22=(236.87,86.4296) (422.581,78.3856) (418.21,228.032) (261.347,228.529) Txyz=0.00813142 -0.0148134 0.140595 Rxyz=-2.14032 0.0777095 0.138929 22是标记的唯一标识符,接下来的四对数字是标记的四个角。我这里的问题是两个向量Tvec和Rvec 我在互联网上读到

我一直在试图理解下载aruco库时包含的aruco_test.cpp程序的输出

输出具有以下格式:

22=(236.87,86.4296) (422.581,78.3856) (418.21,228.032) (261.347,228.529) Txyz=0.00813142 -0.0148134 0.140595 Rxyz=-2.14032 0.0777095 0.138929
22是标记的唯一标识符,接下来的四对数字是标记的四个角。我这里的问题是两个向量Tvec和Rvec

我在互联网上读到tvec是从我的相机中心到我的物体(本例中的标记)的平移向量,rvec是物体相对于我的相机的旋转

关于这一点,我有几个问题:

我怎么知道我相机的轴?我是说,有没有办法知道x,y和z的方向

如何从对象相对于摄影机的旋转中获取摄影机的旋转

有人能给我解释一下向量的意思吗,这样我才能真正理解它?我想我这里的主要问题是我真的不知道这些数字到底意味着什么

编辑:我一直在做一些测试来检查旋转是如何工作的,但我并不真正理解结果:

  • 移动摄像头,将标记固定在地板上:
  • 初始位置:相机注视标记-‘y’向上,而‘x’向右:Rxyz=2.40804-0.0823451 0.23141

    在标记的“x”轴上移动相机(向上倾斜相机):Rxyz=-1.97658-0.0506794-0.020052

    在标记的“y”轴上移动相机(将相机向右倾斜):Rxyz=2.74544-0.118551-0.973627

    将相机向右旋转90度:Rxyz=1.80194-1.86528 0.746029

  • 移动标记而不是相机,使相机固定在标记上:
  • 使用与前一种情况相同的初始位置

    在其“x”轴上移动标记:Rxyz=2.23619-0.0361307-0.0843008

    在“y”轴上移动标记:Rxyz=-2.9065-0.0291299-1.13356

    在其“z”轴上移动标记(向右旋转90º):Rxyz=1.78398 1.74161-0.690203

    我一直假设向量的每个数字都是在各自的轴上的旋转,但我认为我的假设是错误的,因为如果是这样的话,这个值就没有多大意义了

    我怎么知道我相机的轴?我是说,有办法知道吗 x、y和z面对的是什么

    这是在中定义的
    x
    -轴从图像的左侧到右侧增加,
    y
    -轴从图像的顶部到底部增加,
    z
    轴朝着相机的前部增加。下图解释了此轴选择。

    如何从相机的旋转中获得相机的旋转 相机里有什么东西

    rvec
    是标记相对于相机帧的旋转。您可以使用内置的旋转矩阵将
    rvec
    转换为3x3旋转矩阵。如果标记与相机框架对齐,该旋转矩阵应为3x3单位矩阵

    如果得到该矩阵的逆矩阵(这是一个旋转矩阵,因此逆矩阵是矩阵的转置),即相机相对于标记的旋转

    有人能给我解释一下向量的意思吗,这样我才能真正理解它? 我想我的主要问题是我真的不知道这些是什么 数字意味着真实


    tvec
    是从相机帧原点到检测到的标记中心的距离(这是图上的
    F_c
    -
    p
    线。
    rvec
    如上述答案所述。

    我不确定答案,但你能试着用你的图像乘以你的变换矢量吗(转换*图像)这可能有效也可能无效我真的不确定。