gpt4 book ai didi

Android camera2 曝光问题。在使用 YUV ImageReader 的情况下预览曝光过度

转载 作者:搜寻专家 更新时间:2023-11-01 09:48:22 31 4
gpt4 key购买 nike

基于 Nexus 5x 的非常奇怪的问题。

我有一组用于相机应用程序的普通表面:- 用于屏幕预览的 SurfaceHolder- 用于预览帧数据的 YUV 格式的 ImageReader- YUV 或 JPEG 格式的 ImageReader(取决于所选的内部应用程序模式)用于捕获静止图像。

当使用 JPEG ImageReader 配置 captureSession 时,一切正常,屏幕预览正常显示。但是当使用 YUV ImageReader 时,屏幕预览可能会曝光过度,具体取决于构图。我必须注意,曝光测光区域设置为传感器的整个 activeRect。

查看此屏幕截图:

  1. 正常曝光预览。使用 JPEG ImageReader。 NORMAL EXPOSED PREVIEW. JPEG ImageReader is used

  2. 曝光过度的预览。使用 YUV ImageReader。 enter image description here

3&4。 JPEG 和 YUV 图像阅读器。其他一些构图和预览现在通常会在这两种情况下曝光。 enter image description here enter image description here

最佳答案

我终于找到了那个错误的原因!

您会感到惊讶,但该错误是由捕获 session 的表面列表强制执行的。更具体地说,表面在列表中的添加顺序!如果首先添加相机预览表面 (SurfaceHolder),则一切正常:

    // prepare list of surfaces to be used in capture requests
List<Surface> sfl = new ArrayList<Surface>();

sfl.add(mCameraSurface); // surface for viewfinder preview

sfl.add(mPreviewImageReader.getSurface()); //preview data
sfl.add(mImageReader.getSurface()); // surface for image capture

// configure camera with all the surfaces to be ever used
camDevice.createCaptureSession(sfl, new sessionListener(), null);

但是当它最后添加时我们遇到了那个错误 - 预览过度曝光!

// prepare list of surfaces to be used in capture requests
List<Surface> sfl = new ArrayList<Surface>();

sfl.add(mPreviewImageReader.getSurface()); //preview data
sfl.add(mImageReader.getSurface()); // surface for image capture

sfl.add(mCameraSurface); // surface for viewfinder preview

// configure camera with all the surfaces to be ever used
camDevice.createCaptureSession(sfl, new sessionListener(), null);

这让我大吃一惊!

关于Android camera2 曝光问题。在使用 YUV ImageReader 的情况下预览曝光过度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36859673/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com