首页 > 解决方案 > Camera2默认控制场景模式为CONTROL_SCENE_MODE_FACE_PRIORITY

问题描述

在设置任何参数之前,CaptureRequest.Builder我检查了默认控制场景模式是否未禁用

Timber.d("captureRequestBuilder sceneMode ${get(CaptureRequest.CONTROL_SCENE_MODE)} == ${CameraMetadata.CONTROL_SCENE_MODE_DISABLED}")
Timber.d("captureRequestBuilder mode ${get(CaptureRequest.CONTROL_MODE)} == ${CameraMetadata.CONTROL_MODE_AUTO}") 

captureRequestBuilder 场景模式 1 == 0

captureRequestBuilder 模式 1 == 1

CONTROL_SCENE_MODE_DISABLED = 0;

CONTROL_SCENE_MODE_FACE_PRIORITY = 1;

为什么CONTROL_SCENE_MODE_FACE_PRIORITYCamera2默认控制场景模式?

如果我将 Camera2 用于仪表板摄像头应用程序(汽车录像机),我应该设置什么?绝对不应该是路上的人脸识别……

我认为默认场景将被禁用,直到开发人员明确设置它......

所有可能的值(当然,设备可能不完全支持这些场景模式):

在此处输入图像描述

标签: androidandroid-cameraandroid-camera2

解决方案


在大多数用例中,如果手机使用 FACE_PRIORITY 作为默认设置,最好将其保留为 FACE_PRIORITY。

该模式允许相机测光使人脸看起来尽可能好——它不进行人脸识别,只是进行人脸检测。因此,它会找到有面孔的位置,并尝试确保这些区域光线充足且聚焦。

如果你愿意,你可以通过完全关闭场景模式来关闭它,方法是将CONTROL_MODE设置为AUTO而不是USE_SCENE_MODE。当设置为 AUTO 时,将忽略 CONTROL_SCENE_MODE 的值。


推荐阅读