iOS Camera焦点值

时间:2012-02-27 12:42:47

标签: iphone camera focus

有没有办法通过自动对焦从iPhone相机获得焦点值?

我想用这些数据来计算从iPhone到焦点对象的距离。

2 个答案:

答案 0 :(得分:2)

我认为没有焦点价值这样的东西。

答案 1 :(得分:2)

显然这是一个老问题,但是因为可以选择获得"镜头价值"因为iOS8应该出现在这里。

从iOS8开始,您可以通过键值观察lensPosition从镜头获取焦点值。它是AVCaptureDevice类的属性,它是AVFoundation框架的一部分。

所以在你的相机类的某个地方设置观察者:

// Assuming _device is an object of the `AVCaptureDevice` class
[_device addObserver:self forKeyPath:@"lensPosition" options:NSKeyValueObservingOptionNew context:nil];

在你用作观察者的班级中:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    if ([keyPath isEqualToString:@"lensPosition"]) {
        NSLog(@"change: %@", change);
        NSLog(@"lens position: %f", [change[@"new"] floatValue]);
    }
}

镜头的位置将显示为0到1的标量值。 您也可以手动设置镜头位置。您可以在Apple文档中找到有关managing the lens position的更多信息。

最后,与所有key-value observer一样,不要忘记删除观察者。

注意:镜头是设备中的机械部件,通过弹簧移动镜头进行聚焦。因此,值取决于设备和情况。