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.

Android Camera2: ¿Cómo obtener los valores actuales de autoexposición y auto-ISO?

¿Cómo puedo obtener los valores de exposición automática (auto-exposure) y de ISO automático para una sesión de cámara Android Camera2? No estoy buscando los valores SENSOR_EXPOSURE_TIME y SENSOR_SENSITIVITY, ya que estos devuelven valores de exposición y ISO que no son automáticos. Estoy buscando los valores de exposición automática y de ISO automáticos.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para acceder a los valores actuales de autoexposición y autoiso de una sesión de cámara Android Camera2, necesitarás usar la clase CameraCharacteristics. Específicamente, deberás usar las claves CONTROL_AE_MODE y CONTROL_AE_TARGET_FPS_RANGE para acceder a los valores de autoexposición y autoiso.

    Aquí tienes un ejemplo de código para empezar:

    // Obtener las características de la cámara
    CameraManager cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
    CameraCharacteristics characteristics = cameraManager.getCameraCharacteristics(cameraId);
    
    // Obtener el modo AE (autoexposición)
    int aeMode = characteristics.get(CameraCharacteristics.CONTROL_AE_MODE);
    
    // Comprobar si está habilitada la autoexposición
    if (aeMode == CameraMetadata.CONTROL_AE_MODE_ON) {
        // Obtener el rango de FPS objetivo de AE (esto determina el nivel de autoiso)
        Range<integer> aeFpsRange = characteristics.get(CameraCharacteristics.CONTROL_AE_TARGET_FPS_RANGE);
    
        // Obtener los valores mínimo/máximo del rango de FPS objetivo
        int minFps = aeFpsRange.getLower();
        int maxFps = aeFpsRange.getUpper();
    
        // Utilizar los valores mínimo/máximo para calcular el nivel de autoiso
        int autoIso = (int) (minFps * maxFps / 6); // alguna fórmula arbitraria para calcular el ISO
        // Nota: esto es solo un ejemplo, la fórmula real puede ser diferente según tu caso de uso
    
        // Registrar los valores de autoexposición y autoiso
        Log.d(TAG, "Autoexposición habilitada con nivel de autoiso: " + autoIso);
    } else {
        Log.d(TAG, "La autoexposición no está habilitada");
    }
    

    Ten en cuenta que esta es solo una forma de acceder a los valores de autoexposición y autoiso, y la implementación real puede variar según tu caso de uso específico. Además, este código solo verifica la autoexposición; si también necesitas obtener el balance de blancos automático u otros valores de ajuste automático, deberás modificar el código en consecuencia.

Comments are closed.