我正在使用android上的opencv库开发一个应用程序,默认的照相机类JavaCameraView使用的是不推荐的库android.hardware.Camera
我想控制曝光水平手动和禁用相机自动曝光。
我发现禁用它的唯一方法是将setAutoExposureLock设置为true,但它也使setExposureCompensation变得无用。
此外,即使在自动曝光模式下,getExposureCompensation() 也总是返回,如果用setExposureCompensation(int值)对其进行修改,则返回设置的值,但摄像机预览仍然相同。
我发现将setExposureCompensation 设置几次到其最大作品,或多或少,它会慢慢地将相机预览曝光更改为其最大曝光量.但这没有任何意义。
下面是代码:
Camera.Parameters parameters = mCamera.getParameters();
parameters.setAutoExposureLock(false);
parameters.setExposureCompensation(parameters.getMaxExposureCompensation());
mCamera.setParameters(parameters);
parameters = mCamera.getParameters();
parameters.setAutoExposureLock(true);
mCamera.setParameters(parameters);
顺便说一下,我的设备是Moto (Android6.0),曝光补偿级别从-12到12,曝光步骤0.166667。
我希望能够提供一个特定的暴露水平。
发布于 2016-09-26 12:41:51
我找到了更好的解决办法。
将setAutoExposureLock保留为false,并在每个onPreviewFrame()中设置公开很好。
Camera.Parameters parameters = mCamera.getParameters();
parameters.setExposureCompensation(exposure);
mCamera.setParameters(parameters);
我希望这对处于同样情况的人有所帮助。
发布于 2019-07-01 08:31:40
我找到了一种更好的方法来设置曝光:
Camera.Parameters params = mCamera.getParameters();
params.setExposureCompensation(-10);
params.setAutoExposureLock(true);
mCamera.setParameters(params);
我先将setExposureCompensation()
设置为true
,然后将setAutoExposureLock
设置为true
,然后将代码放在initializeCamera()
中,不需要将其放在onPreviewFrame()
中。
https://stackoverflow.com/questions/39600263
复制相似问题