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);
}
android camera2 相机新上电第一张效果很好。第二张开始就爆光过度,是什么原因?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
阿里嘎多学长 2025-02-14 15:16关注阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
Android Camera2 相机新上电第一张效果很好。第二张开始就爆光过度,是什么原因?
你遇到的问题是 Camera2 相机在拍摄第一张照片时效果很好,但第二张照片开始就出现爆光过度的问题。
可能的原因是 Camera2 相机在拍摄第一张照片时,自动曝光系统还没有完全适应环境光照,导致曝光不准确。第二张照片开始,自动曝光系统已经适应环境光照,导致曝光过度。
解决方法:
- 在拍摄前,设置曝光值为 manual 模式,手动设置曝光值。
- 在拍摄前,使用
setAutoExposureLock方法锁定曝光值,避免自动曝光系统的影响。 - 在拍摄前,使用
setAntibandingMode方法设置抗抖动模式,避免曝光过度。
代码示例:
// 设置曝光值为 manual 模式 builder.setControlMode(CameraMetadataController.CONTROL_MODE_MANUAL); // 手动设置曝光值 builder.setExposureCompensation(0); // 锁定曝光值 builder.setAutoExposureLock(true); // 设置抗抖动模式 builder.setAntibandingMode(CameraMetadataController.ANTIBANDING_MODE_50HZ);注意:上述代码只是示例,需要根据实际情况进行调整。
解决 无用评论 打赏 举报