【发布时间】:2019-03-20 20:39:10
【问题描述】:
在 OpenCV 中,我使用的是 Charuco 板,已校准相机,并使用估计来获取 rvec 和 tvec。 (类似于示例代码)。我正在使用固定板,相机四处移动。我是一个菜鸟,所以如果这是我想念的简单的东西,请多多包涵。
我知道我可以使用 Rodrigues() 从 rvec 获取板方向的 3x3 旋转矩阵,并且我可以使用 worldPos = -Rt() * tvec(在 python 中)将 tvec 值转换为世界坐标获取相机位置
似乎我得到了我需要的一切,但是,如果我物理旋转相机,WorldPos 也会发生巨大变化!我确定这不是因为我尝试了很多次后相机已经移动了。
不知道问题出在哪里,谢谢你的建议。
代码如下(在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]]
【问题讨论】:
-
尝试在这里提问:answers.opencv.org/questions
-
“如果我旋转相机”是什么意思?身体上?多少是巨大的?您应该使用示例和数字以及您使用的代码更好地解释,以便人们更好地理解问题。
-
您确定 rvec 和 tvec 是相机外在因素,而不是相对于相机的物体/板位吗?
-
@api55 是的,我物理旋转相机。
-
@Micka 我认为这是相对于相机的板姿势。我发现我需要让相机外部来估计相机的worldPos。那你能给我一些建议吗?谢谢!
标签: python opencv camera aruco