我有一个任务可以在图像中找到对象。
,然后将相机的2d坐标(x,y)转换为机械臂的3d坐标。现在,我可以使用我的opencv python代码找到2d坐标,并且可以通过我的机器人程序中的教学方法找到3d坐标,但它们的起点不同。但是,我用来将2d转换为3d坐标的方法仍然是错误的。由于机械臂和相机的原点不在同一点。因此,我想问一下,如果原点不相同,应该使用什么公式/代码将2d坐标(x,y)转换为3d坐标(x,y,z)。
答案 0 :(得分:0)
假设:
您只需要应用称为
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的答案。
答案 1 :(得分:0)
您需要将点转换为另一个坐标系。
如果您以某种方式计算转换矩阵,则可以使用 cv.transform()方法。
您也可以自己计算:
point3d` = RotationMatrix *(point3d-TranslationVector)
TranslationVector和RotationMatrix是您手臂的外部参数