我有一项任务是在图像中查找对象。

并将我的相机的2d坐标(x,y)转换为我的机械臂的3d坐标。现在我可以用我的opencv python代码找到2d坐标,用我的教学方法从我的机器人程序中找到3d坐标,但在不同的原点。然而,我用来将2d坐标转换为3d坐标的方法仍然是错误的。因为机械臂和摄像机的原点不是同一点。所以我想问一下,如果原点不同,我应该使用什么公式/代码将二维坐标(x,y)转换为三维坐标(x,y,z)。
发布于 2018-07-06 16:54:21
假设:
您只需要应用一种称为旋转平移的刚性转换。为了简化下面的示例代码,我们还假设两个坐标系的Z轴彼此平行,垂直于“表”,并且具有相同的方向。因此,唯一可能的旋转是围绕Z轴。
x, y, z = get_3d(x, y)
x -= camera_origin_x_in_arm_coord_system
y -= camera_origin_y_in_arm_coord_system
z -= camera_origin_z_in_arm_coord_system
arm_x = x*cos(theta) - y*sin(theta)
arm_y = x*sin(theta) + y*cos(theta)
arm_z = z有关更复杂的旋转,请参阅this question的答案。
发布于 2018-07-06 19:55:02
您需要将点转换到另一个坐标系中。
如果你以某种方式计算变换矩阵,你可以使用cv.transform()方法。
你也可以计算你自己:
point3d` = RotationMatrix * (point3d - TranslationVector)
TranslationVector和RotationMatrix它是arm的外部参数
https://stackoverflow.com/questions/51205858
复制相似问题