camera2 API - установить баланс белого, но получить зеленое изображение

У меня проблема с получением предыдущей цветовой температуры сделанного снимка и установкой следующего снимка с помощью API camera2.

if ( nbOfPict > 0 ){
       builder.set( CaptureRequest.CONTROL_AWB_MODE, CameraMetadata.CONTROL_AWB_MODE_OFF );
       builder.set( CaptureRequest.COLOR_CORRECTION_MODE, CameraMetadata.COLOR_CORRECTION_MODE_TRANSFORM_MATRIX );
       builder.set( CaptureRequest.COLOR_CORRECTION_TRANSFORM, characteristics.get( CameraCharacteristics.SENSOR_CALIBRATION_TRANSFORM1 ) );
       builder.set( CaptureRequest.COLOR_CORRECTION_GAINS, colorTemperature );
}

и по результату захвата

if ( nb == 0 ) {
       colorTemperature = result.get(CaptureResult.COLOR_CORRECTION_GAINS);
}

но после второго снимка результирующее изображение стало зеленым, как этим только на Huawei, Я не знаю почему. Этот пост также имеет зеленое изображение, но не объясняет, почему .


person sdkgbsd    schedule 20.07.2021    source источник


Ответы (1)


Вы также должны использовать значение COLOR_CORRECTION_TRANSFORM из CaptureResult, как и для COLOR_CORRECTION_GAINS, вместо использования SENSOR_CALIBRATION_TRANSFORM1; последний предназначен для обработки изображений RAW, а не для использования в качестве допустимого COLOR_CORRECTION_TRANSFORM.

Вы также можете просто заблокировать AWB, пока не закончите захват изображений.

person Eddy Talvala    schedule 21.07.2021
comment
Я не смог заставить работать преобразование цветокоррекции, но блокировка AWB работает, интересно, изменит ли мое приложение баланс белого до блокировки AWB и после первой фотографии, как указано в документации. - person sdkgbsd; 23.07.2021