如何在自动对焦模式下计算物体与相机的距离?我尝试过使用Camera.Parameters.getFocusDistances(float [])方法,但它总是在我的Galaxy S2上返回值.15,1.2和Infinity。任何帮助将不胜感激。 这是我正在使用的代码: -
..........
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
}
还有其他方法可以实现这个目标吗?
答案 0 :(得分:1)
Nope :( Check out this other stackoverflow answer.“没有。相机只能为您提供图像数据而单独的图像并不能为您提供足够的信息来为您提供深度信息。如果您有多个图像,那么您有位置信息甚至视频你可以处理三角测量距离,但单独一个图像不足以给你一个距离“
答案 1 :(得分:1)
使用公式1 / f = 1 / v + 1 / u可能有一个解决方案,其中f是焦距,v是CCD / CMOS距镜头的距离,u是物体的距离从相机。问题是,我们能得到v的值吗?