我一直无法理解opencv的Calib3d.calibrateCamera()函数给出的旋转向量。 为了理解函数的返回值,我尝试了以下步骤。
我首先用Java生成了棋盘图案。然后我应用了15个旋转矢量和15个平移矢量。我还应用了一个代表相机内在矩阵的已知矩阵。我基本上试图重新制作拍摄国际象棋的许多照片的手动过程。我创建的一些图像如下所示: One of the images I generated with identified corners
生成图像后,我通过角点识别和摄像机校准功能运行它们。我找回了几乎完全从校准函数中使用的内在矩阵。
当我比较用于生成图像的旋转矢量和从校准函数返回的矢量时,它们是彼此的负数。比较图如下所示:
Comparing input and output Rotation value about x axis
这是正常行为还是我做错了什么?
answer at表示opencv旋转是从图像坐标系到对象坐标系。这可能是个原因吗?
答案 0 :(得分:0)
如果预期和实际旋转矢量彼此相反,则意味着预期和实际旋转矩阵是彼此相反的。因此,您可能会混淆源和目标坐标系。
通常,这很容易检查: