2024-05-16 22:57:00 发布
网友
我的任务是在图像中找到物体。在
并将二维坐标(x,y)从相机转换为机械臂的三维坐标。现在我可以用我的opencv python代码找到二维坐标,用我的教学方法从机器人程序中找到三维坐标,但原点不同。但是,我用来将二维坐标转换为三维坐标的方法仍然是错误的。因为机械臂和相机的原点不是同一点。所以我想问一下,如果原点不一样,我应该用什么公式/代码将二维坐标(x,y)转换为三维坐标(x,y,z)。在
假设:
您只需要应用一个名为旋转平移的刚性变换。 为了简化下面的示例代码,我们还假设两个坐标系的Z轴彼此平行,垂直于“table”,并且具有相同的方向。所以,唯一可能的旋转是围绕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的答案。在
您需要将点转换为另一个坐标系。在
如果你计算出转换矩阵,你可以用 cv.transform()方法。在
你也可以自己计算:
point3d`=RotationMatrix*(point3d-TranslationVector)
平移向量和旋转矩阵这是你手臂的外部参数
假设:
您只需要应用一个名为旋转平移的刚性变换。 为了简化下面的示例代码,我们还假设两个坐标系的Z轴彼此平行,垂直于“table”,并且具有相同的方向。所以,唯一可能的旋转是围绕Z轴。在
对于更复杂的旋转,请参考this question的答案。在
您需要将点转换为另一个坐标系。在
如果你计算出转换矩阵,你可以用 cv.transform()方法。在
你也可以自己计算:
point3d`=RotationMatrix*(point3d-TranslationVector)
平移向量和旋转矩阵这是你手臂的外部参数
相关问题 更多 >
编程相关推荐