z109876543210 2025-02-14 15:16 采纳率: 25%
浏览 8
已结题

android camera2 相机新上电第一张效果很好。第二张开始就爆光过度,是什么原因?


try {
            CaptureRequest.Builder builder =
                    mCamera.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);
            builder.addTarget(mImageReader.getSurface());
            builder.setTag(tag); // 关联自定义对象

            // 获取CameraCharacteristics
            CameraCharacteristics characteristics = mCameraManager.getCameraCharacteristics(mCamera.getId());

            // 设置曝光补偿(需检查支持性)
            Range<Integer> aeRange = characteristics.get(
                    CameraCharacteristics.CONTROL_AE_COMPENSATION_RANGE
            );
            if (aeRange != null) {
                int minEv = aeRange.getLower();
                builder.set(CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION, minEv);
            }

            synchronized (mRequestQueue) {
                mRequestQueue.offer(builder.build());
            }

            mCaptureSession.capture(builder.build(), null, null);
        } catch (CameraAccessException e) {
            notifyError(e);
        }
  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2025-02-14 15:16
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    Android Camera2 相机新上电第一张效果很好。第二张开始就爆光过度,是什么原因?

    你遇到的问题是 Camera2 相机在拍摄第一张照片时效果很好,但第二张照片开始就出现爆光过度的问题。

    可能的原因是 Camera2 相机在拍摄第一张照片时,自动曝光系统还没有完全适应环境光照,导致曝光不准确。第二张照片开始,自动曝光系统已经适应环境光照,导致曝光过度。

    解决方法:

    1. 在拍摄前,设置曝光值为 manual 模式,手动设置曝光值。
    2. 在拍摄前,使用 setAutoExposureLock 方法锁定曝光值,避免自动曝光系统的影响。
    3. 在拍摄前,使用 setAntibandingMode 方法设置抗抖动模式,避免曝光过度。

    代码示例:

    // 设置曝光值为 manual 模式
    builder.setControlMode(CameraMetadataController.CONTROL_MODE_MANUAL);
    
    // 手动设置曝光值
    builder.setExposureCompensation(0);
    
    // 锁定曝光值
    builder.setAutoExposureLock(true);
    
    // 设置抗抖动模式
    builder.setAntibandingMode(CameraMetadataController.ANTIBANDING_MODE_50HZ);
    

    注意:上述代码只是示例,需要根据实际情况进行调整。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月17日
  • 创建了问题 2月14日