Фокус камеры iOS - PullRequest
       20

Фокус камеры iOS

1 голос
/ 27 февраля 2012

Есть ли способ получить значение фокусировки с камеры iPhone с автофокусом?

Я хочу использовать эти данные для расчета расстояния от iPhone до объекта в фокусе.

Ответы [ 2 ]

2 голосов
/ 14 октября 2015

Очевидно, что это старый вопрос, но поскольку есть возможность получить «значение линзы», начиная с 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.

Наконец, как и для всех наблюдателей со значением ключа , не забудьте удалить наблюдателя.

ПРИМЕЧАНИЕ. Объектив - это механическая часть устройства, и фокусировка осуществляется путем перемещения объектива через пружину. Значения отличаются в зависимости от устройства и ситуации.

2 голосов
/ 27 февраля 2012

Я не думаю, что существует такая вещь, как значение фокуса.

...