Есть ли способ получить значение фокуса с камеры iPhone с автофокусом?
Я хочу использовать эти данные для расчета расстояния от iPhone до объекта в фокусе.
Есть ли способ получить значение фокуса с камеры iPhone с автофокусом?
Я хочу использовать эти данные для расчета расстояния от iPhone до объекта в фокусе.
Очевидно, что это старый вопрос, но поскольку есть возможность получить «значение линзы», начиная с 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.
Наконец, как и во всех обозреватель ключ-значение не забудьте удалить наблюдателя.
ПРИМЕЧАНИЕ. Объектив является механической частью устройства, и фокусировка осуществляется путем перемещения объектива с помощью пружины. Таким образом, значения различаются в зависимости от устройства и ситуации.
Я не думаю, что существует такая вещь, как значение фокуса.