Camera2 API手动设置白平衡后切换自动模式失效问题咨询
问题原因及解决方案
核心原因
当你手动设置白平衡时,通过指定COLOR_CORRECTION_MODE_TRANSFORM_MATRIX并设置COLOR_CORRECTION_GAINS,相机的色彩校正逻辑会完全切换到手动控制模式——此时相机内部的自动白平衡(AWB)模块会被禁用,无论你后续设置CONTROL_AWB_MODE为自动还是日光模式,相机都不会再触发AWB的自动计算,所以你的切换操作看起来没有效果。
而如果从未手动设置过白平衡,相机默认使用COLOR_CORRECTION_MODE_FAST或COLOR_CORRECTION_MODE_HIGH_QUALITY,这两个模式会让相机依赖内部AWB模块的计算结果,所以设置CONTROL_AWB_MODE能正常生效。
解决方法
要切换回自动AWB模式,必须先将色彩校正模式恢复为相机自动处理的模式,再设置AWB参数:
// 恢复色彩校正模式为相机自动计算(FAST侧重性能,HIGH_QUALITY侧重画质,二选一) previewRequestBuilder.set(CaptureRequest.COLOR_CORRECTION_MODE, CameraMetadata.COLOR_CORRECTION_MODE_FAST); // 设置AWB模式为自动 previewRequestBuilder.set(CaptureRequest.CONTROL_AWB_MODE, CameraMetadata.CONTROL_AWB_MODE_AUTO); // 更新捕获会话使设置生效 captureSession.setRepeatingRequest(previewRequestBuilder.build(), null, null);
补充说明
COLOR_CORRECTION_MODE_TRANSFORM_MATRIX是完全手动的色彩校正模式,一旦设置,相机的所有自动色彩相关逻辑都会被覆盖,包括AWB。- 切换回自动模式后,相机才会根据你设置的
CONTROL_AWB_MODE重新启动对应的白平衡计算逻辑。
内容的提问来源于stack exchange,提问作者jack
相关产品推荐
相关产品推荐

