Pregunta ¿Hay alguna manera de programar programáticamente el enfoque de la cámara de un dispositivo iOS al infinito?


Estoy creando una aplicación que bloquea el enfoque de la cámara para grabar video. Quiero bloquear el enfoque al infinito sin que el usuario ajuste manualmente el enfoque. es posible? ¡Gracias!


12
2017-12-13 11:50


origen


Respuestas:


Esa es la forma de deshabilitar el foco, lo bloquea todo el tiempo:

// Find a suitable capture device
    AVCaptureDevice *cameraDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

    // SETUP FOCUS MODE
    if ([cameraDevice lockForConfiguration:nil]) {

        [cameraDevice setFocusMode:AVCaptureFocusModeLocked];

        [cameraDevice unlockForConfiguration];
    }
    else{
        NSLog(@"error while configuring focusMode");
    }

¿Qué quieres decir con "bloquear el foco al infinito"?


6
2018-01-20 11:35



Tristemente no. Puede configurar la cámara en el modo de enfoque enfocado, como dijo Artem; poner en modo autofoco (enfoque, bloqueo) o modo de enfoque automático continuo, pero no puede darle a la cámara una distancia específica para enfocar.

Lo mejor que he podido encontrar (para la exposición y el control del balance de blancos, que son igualmente limitados) es hacer que el usuario apunte la cámara a una escena apropiada (en su caso, algo lejano) y haga que él / ella presione un botón de bloqueo.

Detalles sobre la API del dispositivo de captura, como por ejemplo: https://developer.apple.com/library/mac/#documentation/AVFoundation/Reference/AVCaptureDevice_Class/Reference/Reference.html


6
2017-11-25 00:41



AVCaptureDevice tiene la función setFocusModeLockedWithLensPosition: completionHandler:

Puedes usarlo para configurar 1.0 para lograr una distancia "infinita"

    func focusTo(value : Float) {
      if let device = captureDevice {
      if(device.lockForConfiguration(nil)) {
         device.setFocusModeLockedWithLensPosition(value, completionHandler: { (time) -> Void in
            //
        })
        device.unlockForConfiguration()
      }
    }

Actualizar: Según la documentación de Apple 1.0, no representa el foco en el infinito.


1
2017-08-08 10:11