当相机相对于地面保持(例如)45度时,如何使用一个相机和OpenCV确定物体的3D位置?
答案 0 :(得分:1)
两种类型的动作可以应用于3D世界中的相机:平移和旋转。如果没有翻译,则无法从单声道相机推断深度。你应该检查立体视觉的细节。
简单地说,你需要恢复必要的矩阵,其中E = [t_x] R,如果t_x = 0,这意味着你正在使用单眼视觉。没有办法通过古典立体视觉来恢复这一点。
但是,有一些方法使用深度训练数据集来推断测试图像的深度。请检查this slide。他们发布了Matlab的代码;但是,您可以自己轻松实现它。
答案 1 :(得分:0)
如果您想要更准确的结果,您可以使用深度学习模型来估计输入图像中像素的深度。有一些可用的开源模型,例如 one。但是,请注意,bts
模型是从自动驾驶汽车的角度使用 KITTI
数据集进行训练的。为了获得更好的结果,您需要有一个与您的应用程序相关的数据集。然后使用 bts
等框架训练深度估计模型。此模型将为您提供具有 (x,y,z)
坐标的单个图像的点云。