有没有办法通过自动对焦从iPhone相机获得焦点值?
我想用这些数据来计算从iPhone到焦点对象的距离。
答案 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一样,不要忘记删除观察者。
注意:镜头是设备中的机械部件,通过弹簧移动镜头进行聚焦。因此,值取决于设备和情况。