1

在我的项目中,我以像素为单位计算 x,y,Z 以毫米为单位计算与相机的距离。所以我想利用深度并计算 x,y,z。

谁能告诉我我该怎么做?

我有以下信息:

  1. 从图像中获得的 x,y 像素
  2. 与相机的距离以及与相机和物体的物体距离不断变化,因为我正在从不同的距离制作图像
4

1 回答 1

3

如果图像坐标中有 x,y、相机矩阵和世界坐标中有 z,那么您需要将图像坐标放入同质向量中,乘以相机矩阵的倒数,然后乘以 z_world 坐标。一开始可能不直观的是,您在世界坐标中的单位并不重要。乘以相机矩阵的倒数后,您定义了 x/z 比率,它是无单位的。您通过乘以 z_world 来给出结果单位。你可以用毫米、英寸、英里等单位来测量它,你得到的向量将具有相同的单位。

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。

于 2012-11-16T18:00:23.520 回答