在我的项目中,我计算的是x,y的像素,Z是相机的距离,单位为mm。所以我想利用深度并计算x,y,z。
任何人都可以告诉我如何做到这一点吗?
我有以下信息:
答案 0 :(得分:1)
如果图像坐标中有x,y,相机矩阵和世界坐标中的z,则需要将图像坐标放入同质矢量,乘以相机矩阵的倒数,然后乘以z_world坐标。一开始可能不直观的事情是世界坐标中的单位无关紧要。在乘以相机矩阵的倒数后,您已经定义了x / z比率,它是无单位的。您通过乘以z_world给出结果单位。你可以用mm,英寸,英里等来测量它,你得到的矢量将具有相同的单位。
cv::Matx31f world_cord(x_im,y_im,1); //here measured in pixels
world_cord = camera_matrix.inv()*world_cord; //representing a ratio x/z,y/z
world_cord *= z_world; //now x,y,z are measured in units of z_world
world_cord现在包含x_world,y_world,z_world。
答案 1 :(得分:-1)
我建议您阅读3D reconsecration documentation以了解opencv实现。