所以我会使用 3d 投影方程并逆向计算以找到场景中某个对象的 x、y、z。因此,给定物体的大小、相机的焦距,您可以计算出画面中物体的 x、y、z。
我会对相机做一些假设(没有旋转,没有平移,相机位于 z 轴的 0、0、0 处)。
image.x = model.x * camera.focalLength / model.z
image.y = model.y * camera.focalLength / model.z
在你周围翻转它们会得到:
model.x = image.x * model.z / camera.focalLength;
model.y = image.y * model.z / camera.focalLength;
这假设您知道到您认为对象位于相机的点的距离(即 model.z)。同样,如果你想计算物体到相机的距离,你可以这样计算 model.z:
model.z = model.x * camera.focalLength / image.x
model.z = model.y * camera.focalLength / image.y
我想技巧是弄清楚在这种情况下你应该为model.x和model.y使用什么。获取对象的宽度或对象的高度,您可以得出对象中的恒定宽度与场景中对象在距离变化时的宽度之间的关系。
model.z = model.width * camera.focalLength / image.width;
model.z = model.height * camera.focalLength / image.height;
几天来一直坐在那个答案上,所以我检查了我的事实。但这与另一篇文章大致一致。