Android Camera2增加亮度

Android Camera2增加亮度,第1张

概述我在我的应用程序中使用androidcamera2拍摄连续图像,这时我使用camera2获得的图像预览亮度与原始相机相比非常暗.我看过this,但答案中没有类似的要求.我按照建议here尝试在camera2中设置亮度:Notethatthiscontrolwillonlybeeffectiveifandroid.control.aeMode!=OFF.

我在我的应用程序中使用android camera2拍摄连续图像,这时我使用camera2获得的图像预览亮度与原始相机相比非常暗.我看过this,但答案中没有类似的要求.

我按照建议here尝试在camera2中设置亮度:

Note that this control will only be effective if androID.control.aeMode != OFF. This control will take effect even when androID.control.aeLock == true.

captureRequestBuilder = cameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);            captureRequestBuilder.set(CaptureRequest.CONTRol_AE_MODE, CaptureRequest.CONTRol_AE_MODE_ON);            captureRequestBuilder.set(CaptureRequest.CONTRol_AE_LOCK, true);            captureRequestBuilder.set(CaptureRequest.CONTRol_AE_EXPOSURE_COMPENSATION, 6);

但它仍然显示预览为暗图像,如下所示.

看到这里的区别:

原装相机:


使用Camera2:

我需要传递的值是什么,作为第二个参数:

captureRequestBuilder.set(CaptureRequest.CONTRol_AE_EXPOSURE_COMPENSATION, 6);

我保持6,因为正如doc的建议:

For example, if the exposure value (EV) step is 0.333, ‘6’ will mean an exposure compensation of +2 EV; -3 will mean an exposure compensation of -1 EV.

但亮度仍然没有影响..

解决方法:

这里是:

在onConfigured()和unlockFocus()中添加以下代码

captureRequestBuilder.set(CaptureRequest.CONTRol_AE_TARGET_FPS_RANGE,getRange());

通过使用上面的代码,您将获得更好的预览.但是你拍摄的照片将保持不变.为了获得更好的图片,请在captureStillPicture()中使用相同的以下代码

captureBuilder.set(CaptureRequest.CONTRol_AE_TARGET_FPS_RANGE, getRange());

getRange是:

    private Range<Integer> getRange() {    Cameracharacteristics chars = null;    try {        chars = mCameraManager.getCameracharacteristics(mCameraID);        Range<Integer>[] ranges = chars.get(Cameracharacteristics.CONTRol_AE_AVAILABLE_TARGET_FPS_RANGES);        Range<Integer> result = null;        for (Range<Integer> range : ranges) {            int upper = range.getUpper();            // 10 - min range upper for my needs            if (upper >= 10) {                if (result == null || upper < result.getUpper().intValue()) {                    result = range;                }            }        }        if (result == null) {            result = ranges[0];        }        return result;    } catch (CameraAccessException e) {        e.printstacktrace();        return null;    }}
总结

以上是内存溢出为你收集整理的Android Camera2增加亮度全部内容,希望文章能够帮你解决Android Camera2增加亮度所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1099914.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存