首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置Camera2 API中的“控制_AE_曝露_补偿”?

如何设置Camera2 API中的“控制_AE_曝露_补偿”?
EN

Stack Overflow用户
提问于 2017-03-17 08:48:49
回答 1查看 4.2K关注 0票数 2

我目前正在开发AndroidCamer2API,而我目前的问题是,我无法设置"CONTROL_AE_EXPOSURE_COMPENSATION“。

我的代码:

-1.0 < exposureAdjustment <1.0

代码语言:javascript
复制
public void setExposure(double exposureAdjustment) {
    Range<Integer> range1 = mCameraCharacteristics.get(CameraCharacteristics.CONTROL_AE_COMPENSATION_RANGE);
    int minExposure = range1.getLower();
    int maxExposure = range1.getUpper();

    float newCalculatedValue = 0;
    if (exposureAdjustment >= 0) {
        newCalculatedValue = (float) (minExposure * exposureAdjustment);
    } else {
        newCalculatedValue = (float) (maxExposure * -1 * exposureAdjustment);
    }

    mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION, (int) newCalculatedValue);
}

不幸的是它不起作用了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-17 08:54:36

我找到了一个对我有用的解决方案。其中exposureAdjustment参数介于-1到+1之间。

代码语言:javascript
复制
public void setExposure(double exposureAdjustment) {
    Range<Integer> range1 = mCameraCharacteristics.get(CameraCharacteristics.CONTROL_AE_COMPENSATION_RANGE);

    int minExposure = range1.getLower();
    int maxExposure = range1.getUpper();

    if (minExposure != 0 || maxExposure != 0) {
        float newCalculatedValue = 0;
        if (exposureAdjustment >= 0) {
            newCalculatedValue = (float) (minExposure * exposureAdjustment);
        } else {
            newCalculatedValue = (float) (maxExposure * -1 * exposureAdjustment);
        }

        if (mPreviewRequestBuilder != null) {
            try {
                CaptureRequest captureRequest = mPreviewRequestBuilder.build();
                mCaptureSession.setRepeatingRequest(captureRequest, camera2FocusMeteringManager.mCaptureCallbackListener, mBackgroundHandler);
                mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION, (int) newCalculatedValue);
                mCaptureSession.capture(captureRequest, camera2FocusMeteringManager.mCaptureCallbackListener, mBackgroundHandler);
            } catch (CameraAccessException e) {
            }
        }
    }
}

在这里,我通过我的mPreviewRequestBuilder (捕获请求的构建器)为每次曝光调整构建一个新的mPreviewRequestBuilder

这里,您可以找到一个完整的Camera2示例。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42852933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档