ios 9 AVCaptureDevice установка точки фокусировки

Пытаюсь установить точку фокусировки фронтальной камерой.

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

    let screenSize = cameraView.bounds.size

    let frameSize:CGSize = view.frame.size

    if let touchPoint = touches.first {

        var location:CGPoint = touchPoint.locationInView(cameraView)

        print("Tap Location : X: \(location.x), Y: \(location.y)")

        if cameraManager.cameraDevice == .Front {
            print("Front camera is used")

            location.x = frameSize.width - location.x;
        }
        else {
            print("Back camera is used")
        }

        let x = location.x / frameSize.width
        let y = 1.0 - (location.x / frameSize.width)

        let focusPoint = CGPoint(x: x, y: y)

        print("POINT : X: \(x), Y: \(y)")


        let captureDevice = (AVCaptureDevice.devicesWithMediaType(AVMediaTypeVideo) as! [AVCaptureDevice]).filter{$0.position == .Front}.first

        if let device = captureDevice {
            do {
                try device.lockForConfiguration()

                let support:Bool = device.focusPointOfInterestSupported

                if support  {

                    print("focusPointOfInterestSupported: \(support)")

                    device.focusPointOfInterest = focusPoint

                    // device.focusMode = .ContinuousAutoFocus
                    device.focusMode = .AutoFocus
                    // device.focusMode = .Locked

                    device.unlockForConfiguration()

                    print("Focus point was set successfully")
                }
                else{
                    print("focusPointOfInterestSupported is not supported: \(support)")
                }
            }
            catch {
                // just ignore
                print("Focus point error")
            }
        }
    }
}

Он работает на iphone6 ​​для задней камеры. Но, когда активирую фронтальную камеру, она молотила. focusPointOfInterestSupported всегда возвращает false.

Как я могу решить эту проблему. Могу ли я программно установить точку фокусировки?

Спасибо!


person gkhanacer    schedule 18.04.2016    source источник


Ответы (1)


Логическое значение focusPointOfInterestSupported указывает, что передняя камера этого устройства не поддерживает такую ​​настройку фокуса. Фактически, похоже, что камера FaceTime в iPhone 6 имеет фиксированный фокус. В разделе «Технические характеристики» камеры FaceTime iPhone 6 нет упоминания о «фокусировке», но есть в разделе задней камеры «iSight». Кроме того, попытка перефокусировать фронтальную камеру на размытый объект рядом с объективом (нажав в приложении «Камера»), похоже, регулирует только экспозицию, а не фокус.

Источник: https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVCaptureDevice_Class/index.html#//apple_ref/occ/instp/AVCaptureDevice/focusOfInterestSupported

Источник: http://www.apple.com/iphone-6/specs/.

person Sam Falconer    schedule 18.04.2016
comment
Спасибо за ответ. Ты прав. Фронтальная камера поддерживает только регулировку экспозиции. Вы знаете, что насчет зума? Не могу установить коэффициент масштабирования фронтальной камеры по avfoundation. Но некоторые приложения, которые есть в магазине Apple Store, могут устанавливать масштабирование. - person gkhanacer; 19.04.2016
comment
Ни передняя, ​​ни задняя камеры iPhone не поддерживают оптический зум. Все масштабирование, которое делают приложения, - это просто обрезка изображения, чтобы оно выглядело увеличенным. Если AVFoundation не позволяет вам использовать зум на передней камере, это может быть связано с тем, что у нее более низкое разрешение, чем у задней камеры. Приложение «Камера» также не позволяет масштабировать переднюю камеру, как это происходит с задней камерой. - person Sam Falconer; 19.04.2016