如何测量用户与墙壁的距离

时间:2014-07-25 14:00:47

标签: ios objective-c camera distance

我需要测量用户的墙壁距离。当用户打开相机并指向任何表面时,我需要获得距离。我已经阅读了一些链接是否可以用相机测量到物体的距离?我使用代码从这里http://blog.sallarp.com/iphone-accelerometer-device-orientation找到iphone相机角度。

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
    // Get the current device angle
    float xx = -[acceleration x];
    float yy = [acceleration y];
    float angle = atan2(yy, xx);
}

d = h * tan angle

But nothing happen in the nslog and camera.

2 个答案:

答案 0 :(得分:1)

在评论中,您分享了视频的链接:http://youtube.com/watch?v=PBpRZWmPyKo

该应用程序没有对相机进行任何特别复杂的操作,而是使用基本三角函数计算距离,并通过以几种关键方式约束业务问题来实现此目的:

  1. 首先,该应用要求用户指定手机相机镜头的握持高度。

  2. 其次,用户正在测量与地面上某些东西的距离,并将其底部与屏幕上的某个已知位置对齐(这意味着您有一个直角三角形)。

  3. 这两个限制,加上加速度计和相机的镜头焦距,可以让你计算距离。

    如果你的目标十字准线位于屏幕的中心,它可以大大简化问题,它就变成了简单的三角函数问题,即你的d = h * tan(angle)

    顺便说一下,"角度"问题中的代码似乎测量围绕z轴的旋转,即设备面向您时的顺时针/逆时针旋转。但是,对于这个问题,您需要测量设备绕其x轴的旋转,即向前/向后倾斜。有关如何在空间中捕获设备方向的示例,请参阅https://stackoverflow.com/a/16555778/1271826。此外,该答案使用CoreMotion,而您的问题中引用的文章使用的是已弃用的API。

答案 1 :(得分:-1)

唯一可行的方法是,如果你能读出镜头中自动对焦机制的设置。据我所知,这是不可能的。