如何从android摄像机获取物体距离?

如何从android摄像机获取物体距离?,android,camera,Android,Camera,在自动对焦模式下,如何计算对象与摄影机的距离?我尝试过使用Camera.Parameters.getFocusDistances(float[])方法,但它总是在我的Galaxy S2上返回值.15、1.2和无穷大。任何帮助都将不胜感激。 以下是我正在使用的代码:- .......... cam=Camera.open(); Camera.Parameters pa=cam.getParameters(); pa.setFocusMode(Camera.Parameters.FOCUS_MODE

在自动对焦模式下,如何计算对象与摄影机的距离?我尝试过使用Camera.Parameters.getFocusDistances(float[])方法,但它总是在我的Galaxy S2上返回值.15、1.2和无穷大。任何帮助都将不胜感激。 以下是我正在使用的代码:-

..........
cam=Camera.open();
Camera.Parameters pa=cam.getParameters();
pa.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
cam.setParameters(pa);
cam.startPreview();
cam.autoFocus(this);
..........


@Override
public void onAutoFocus(boolean arg0, Camera arg1) {
    // TODO Auto-generated method stub
        float f[]=new float[3];
        arg1.getParameters().getFocusDistances(f);
        text.setText(""+f[1]);  //Always returns 1.2
        t2.setText(""+f[0]);    //Always returns .15
        t3.setText(""+f[2]);    //Always returns Infinity

    }

有没有其他方法可以做到这一点?

没有:(“不可以。相机只能提供图像数据,而仅一张图像无法提供足够的信息来提供深度信息。如果您有多张图像,其中包含位置信息甚至视频,则可以对其进行处理以三角测量距离,但仅一张图像不足以提供距离"

也许有一个解决方案,使用公式1/f=1/v+1/u,其中f是焦距,v是CCD/CMOS与镜头的距离,u是物体与相机的距离。问题是,我们能得到v的值吗?

我也有同样的问题。你找到解决方案了吗?手机上的小传感器,景深几乎是无限的因此不需要对焦。这可能意味着透镜有一个1.2米的固定焦点,景深为0.15米到无穷远的物体总是对焦。