gpt4 book ai didi

android - 使用 Camera2 在 Android 中捕获图像时如何获得绝对最大可能的曝光和灵敏度?

转载 作者:行者123 更新时间:2023-11-30 00:48:12 29 4
gpt4 key购买 nike

我正在尝试使用 android.hardware.camera2 最大限度地提高曝光度和灵敏度,以便尽可能多地将光线转换到图像中。

这是我现在使用的设置:

captureRequestBuilder.set( CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_OFF );
captureRequestBuilder.set( CaptureRequest.BLACK_LEVEL_LOCK, true );
captureRequestBuilder.set( CaptureRequest.COLOR_CORRECTION_ABERRATION_MODE,
CameraMetadata.COLOR_CORRECTION_ABERRATION_MODE_OFF );
captureRequestBuilder.set( CaptureRequest.COLOR_CORRECTION_MODE, CameraMetadata.COLOR_CORRECTION_MODE_TRANSFORM_MATRIX );
int[] cstMatrix = new int[]{ 128, 128, 0, 128, 0, 128, 0, 128, 128, 128, 0, 128, 0, 128, 0, 128, 128, 128 };
ColorSpaceTransform cst = new ColorSpaceTransform( cstMatrix );
captureRequestBuilder.set( CaptureRequest.COLOR_CORRECTION_TRANSFORM, cst );
captureRequestBuilder.set( CaptureRequest.SHADING_MODE, CameraMetadata.SHADING_MODE_OFF );
captureRequestBuilder.set( CaptureRequest.NOISE_REDUCTION_MODE, CameraMetadata.NOISE_REDUCTION_MODE_OFF );
captureRequestBuilder.set( CaptureRequest.CONTROL_AF_MODE, CameraMetadata.CONTROL_AF_MODE_OFF );
captureRequestBuilder.set( CaptureRequest.CONTROL_SCENE_MODE, CameraMetadata.CONTROL_SCENE_MODE_DISABLED );
captureRequestBuilder.set( CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_OFF );
captureRequestBuilder.set( CaptureRequest.CONTROL_AWB_MODE, CameraMetadata.CONTROL_AWB_MODE_OFF );
captureRequestBuilder.set( CaptureRequest.EDGE_MODE, CameraMetadata.EDGE_MODE_OFF );
captureRequestBuilder.set( CaptureRequest.SENSOR_SENSITIVITY, MAX_SENSITIVITY );
captureRequestBuilder.set( CaptureRequest.LENS_FOCUS_DISTANCE, (float) 0.0 );
captureRequestBuilder.set( CaptureRequest.SENSOR_FRAME_DURATION, MAX_FRAME_DURATION );
captureRequestBuilder.set( CaptureRequest.SENSOR_EXPOSURE_TIME, MAX_FRAME_DURATION );
captureRequestBuilder.set( CaptureRequest.HOT_PIXEL_MODE, CameraMetadata.HOT_PIXEL_MODE_OFF );
captureRequestBuilder.set( CaptureRequest.STATISTICS_FACE_DETECT_MODE, CameraMetadata.STATISTICS_FACE_DETECT_MODE_OFF );
captureRequestBuilder.set( CaptureRequest.STATISTICS_LENS_SHADING_MAP_MODE, CameraMetadata.STATISTICS_LENS_SHADING_MAP_MODE_OFF );
captureRequestBuilder.set( CaptureRequest.SENSOR_TEST_PATTERN_MODE, CameraMetadata.SENSOR_TEST_PATTERN_MODE_OFF );
captureRequestBuilder.set( CaptureRequest.CONTROL_VIDEO_STABILIZATION_MODE, CameraMetadata.CONTROL_VIDEO_STABILIZATION_MODE_OFF );

// build all the settings into the camera request
CaptureRequest captureRequest = captureRequestBuilder.build();

// Finally, we start displaying the camera preview.
mCaptureSession.setRepeatingRequest( captureRequest, mCaptureCallback, backgroundHandler );

其中 MAX_SENSITIVITY 和 MAX_FRAME_DURATION_NS 是从给定设备的 GetCameraCharacteristics 函数返回的最大值。

我使用的是 YUV_420_888 格式,因为似乎所有支持 Camera2 接口(interface)的 Android 设备都支持这种格式。

我希望对上面显示的设置进行健全性检查,并希望获得任何其他提示/技巧,以充分利用每个 Camera2 兼容相机。

谢谢。

最佳答案

所以我发现相机特性调用返回的最大灵敏度并不是硬性限制。您可以将 CaptureRequest.SENSOR_SENSITIVITY 设置为远高于假定限制的值,至少对于我正在测试的手机而言。我希望这不是一个可以修复的错误,因为我依赖它。

关于android - 使用 Camera2 在 Android 中捕获图像时如何获得绝对最大可能的曝光和灵敏度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41472210/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com