我一直在尝试了解下载 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 面向哪里?
如何从物体相对相机的旋转获得相机的旋转?
有人可以更好地向我解释向量的含义,以便我能够真正理解它吗?我认为我的主要问题是我真的不知道这些数字的真实含义。
编辑:我一直在做一些测试来检查轮换是如何工作的,但我并不真正理解结果:
- 移动相机,标记固定在地板上:
初始位置:相机看着标记 - 标记的“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
我一直假设向量的每个数字都是各自轴上的旋转,但我认为我的假设是错误的,因为如果是这种情况,这个值没有多大意义。