在OpenCV中,我使用了一个Charuco板,已经校准了摄像机,并使用估算得到了rvec和tvec。(类似于示例代码)。我用的是一个固定板,带着摄像头四处移动。我对这件事一无所知,所以如果这件事是我所缺少的,请原谅我。在
我知道我可以使用Rodrigues()从rvec获得线路板方向的3x3旋转矩阵,并且可以使用worldPos=-R.t()*tvec(在python中)将tvec值转换为世界坐标,以获得相机的位置
似乎我得到了我需要的一切,然而,如果我旋转相机的物理,世界pos也会发生巨大的变化!我敢肯定不是因为我试了很多次相机就被移动了。在
我不知道问题出在哪里,谢谢你的建议。在
代码如下(python)。在
self.retval, self.rvec, self.tvec = aruco.estimatePoseBoard(self.corners, self.ids, board, self.cameraMatrix, self.distanceCoefficients)
self.dst, jacobian = cv2.Rodrigues(self.rvec)
self.rvec_trs = self.dst.transpose()
self.worldPos = - self.rvec_trs * self.tvec
self.worldPos = [self.worldPos[0][0],self.worldPos[1][1], self.worldPos[2][2]]
最后我在米卡的帮助下解决了这个问题。 下面的代码(用python编写),希望能对其他有同样问题的人有所帮助。在
但我还是不知道为什么worldPos=-R.t()*tvec不能得到正确的答案。希望有人能告诉我。谢谢!在
相关问题 更多 >
编程相关推荐