es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cámara de profundidad iOS Swift

Tengo un iPhone 7 Plus y trato de tomar una imagen con datos de profundidad.
Utilizo este código para la configuración.
https://developer.apple.com/documentation/avfoundation/camerasandmediacapture/capturingphotoswithdepth

pero en

func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) {

    print(photo.depthData)
}

el resultado es nulo.
¿Cómo puedo obtener los datos de profundidad? ¿Qué está mal?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Solución:

    Puede haber varias razones por las que no obtengas los datos de profundidad en tu función photoOutput. Aquí hay algunas cosas que puedes verificar:

    1. Asegúrate de que tu dispositivo admita la captura de profundidad. La captura de profundidad requiere cámaras duales, y no todos los modelos de iPhone las tienen. Tu iPhone 7 Plus cuenta con una cámara dual, así que esto no debería ser un problema.
    2. Asegúrate de que estás utilizando la configuración de captura de foto correcta. Necesitas habilitar la captura de profundidad en tu configuración de captura de foto. Aquí tienes un ejemplo de cómo hacerlo:
    let photoSettings = AVCapturePhotoSettings()
    photoSettings.isDepthDataDeliveryEnabled = true
    
    1. Asegúrate de que estás utilizando el método correcto de AVCapturePhotoCaptureDelegate. El método photoOutput(_:didFinishProcessingPhoto:error:) que estás utilizando es para procesar la foto capturada. Si quieres acceder a los datos de profundidad, necesitas utilizar el método photoOutput(_:didFinishProcessingPhoto:previewPhoto:resolvedSettings:bracketSettings:error:). Aquí tienes un ejemplo de cómo usarlo:
    func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, previewPhoto: AVCapturePhoto?, resolvedSettings: AVCaptureResolvedPhotoSettings, bracketSettings: AVCaptureBracketedStillImageSettings?, error: Error?) {
        if let depthData = photo.depthData {
            print(depthData)
        } else {
            print("depthData es nulo")
        }
    }
    
    1. Por último, asegúrate de estar probando en un dispositivo, no en el simulador. El simulador no admite la captura de profundidad.

    Si has verificado todo lo anterior y aún no puedes obtener los datos de profundidad, intenta simplificar tu código al mínimo necesario para ver si funciona. Si lo hace, luego agrega gradualmente tu lógica personalizada hasta identificar el problema.

Comments are closed.