【问题标题】:Android Camera setExposureCompensation(int value) not working as expectedAndroid Camera setExposureCompensation(int value) 未按预期工作
【发布时间】:2016-09-20 17:24:37
【问题描述】:

我正在android上使用opencv库开发应用程序,默认相机类JavaCameraView使用已弃用的库android.hardware.Camera

我想手动控制曝光级别并禁用相机自动曝光。

我发现禁用它的唯一方法是将 setAutoExposureLock 设置为 true,但它也会使 setExposureCompensation没用。

此外,如果我使用 setExposureCompensation(int value) 修改它,即使在自动曝光模式下,getExposureCompensation() 总是返回 0 它返回我设置的值,但是相机预览还是一样的。

我发现将多次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 G (Android 6.0),曝光补偿级别从 -12 到 12,曝光步长 0.166667。

我希望能够进行特定级别的曝光。

【问题讨论】:

    标签: android opencv camera


    【解决方案1】:

    我找到了更好的解决方案。

    setAutoExposureLock 设置为 false 并在每个 onPreviewFrame() 中设置曝光效果很好。

    Camera.Parameters parameters = mCamera.getParameters();
    parameters.setExposureCompensation(exposure);
    mCamera.setParameters(parameters);
    

    我希望这对处于相同情况的人有所帮助。

    【讨论】:

      【解决方案2】:

      我找到了一种更好的设置曝光的方法:

      Camera.Parameters params = mCamera.getParameters();
      params.setExposureCompensation(-10);
      params.setAutoExposureLock(true);
      mCamera.setParameters(params);
      

      我先设置setExposureCompensation(),然后将setAutoExposureLock设置为true,然后将此代码放入initializeCamera(),无需放入onPreviewFrame()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-25
        • 2018-12-18
        • 1970-01-01
        • 1970-01-01
        • 2018-02-08
        相关资源
        最近更新 更多