我正在使用Camera2 API来修改相机快门速度。
所以我必须CONTROL_AE_MODE
设置为AE_MODE_OFF
.
然后自动曝光算法不会覆盖SENSOR_SENSITIVITY
值。
但是快门速度改变后,感光度值变得不合适。预览变得太暗或太白。
我的问题是:AE_MODE
OFF
时如何自动更改SENSOR_SENSITIVITY
(ISO值)。
我知道在iOS相机中,它们exposureTargetOffset
价值来决定iso值是否合适。
但我还没有在安卓相机2 api中找到。
任何建议将不胜感激。
相机2目前没有半自动模式;如果关闭自动曝光,则必须手动控制曝光和感光度。
您可以将自动曝光保持打开状态,并使用曝光补偿来调暗/增亮图像。
AE模式关闭时,SENSOR_EXPOSURE_TIME
和SENSOR_SENSITIVITY
都可以更改。这些设置的范围可能会有所不同,可以分别由 SENSOR_INFO_EXPOSURE_TIME_RANGE
和 SENSOR_INFO_SENSITIVITY_RANGE
请求。请注意,并非所有手机都这样做!
您可以查看"打开相机"项目作为更改这些值的一个很好的例子。
如果其他人想要答案 如果您在CameraCaptureSession.CaptureCallback.onCaptureCompleted
中使用 camera2 API,则可以获得当前的自动曝光时间和 iso 感光度。每个预览帧都会调用它。因此,您可以在开启自动曝光的情况下运行预览,每次获得预览帧保存曝光乘以ISO
mExposureTimesISO=(double)(result.get(TotalCaptureResult.SENSOR_SENSITIVITY)*result.get(TotalCaptureResult.SENSOR_EXPOSURE_TIME));
然后在您的拍照通话中将其设置为手动曝光,然后将此值除以所需的ISO,例如,在我的ISO 100锁定图像捕获例程中,它如下所示:
double exposureAtISO100=mExposureTimesISO/100.0;
CaptureRequest.Builder build=mCamera.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);
build.set(CaptureRequest.CONTROL_AE_MODE,CaptureRequest.CONTROL_AE_MODE_OFF);
build.set(CaptureRequest.SENSOR_SENSITIVITY,100);
build.set(CaptureRequest.SENSOR_EXPOSURE_TIME,(long)exposureAtISO100);