我正在编写一个 android 应用程序以在用户按下捕获按钮时快速捕获 flash/no-flash 图像对。为了编写我的应用程序,我在这里提到了 Camera2Basic 应用程序。
从 Android 文档中,我发现要触发闪存,预览请求构建器应该将AE_MODE设置为AE_MODE_ON_ALWAYS_FLASH。
我正在使用三个请求构建器:preview、noflash和flash 三个之间的区别是:
预览:AE_MODE 设置为 AE_MODE_ON_ALWAYS_FLASH 和 AF_MODE 设置为 CONTROL_AF_MODE_CONTINUOUS_PICTURE
noflash : AE_MODE 设置为 AE_MODE_ON
flash : AE_MODE 设置为 AE_MODE_ONALWAYS_FLASH
我正在使用Nexus 5设备,我发现要捕获 Flash 图像,必须具有上述预览构建器和 Flash 构建器,并使用上述Flash构建器提交静态捕获请求。使用这个序列,我总能在 Nexus 5 中获得正确的 flash 图像。预闪总是自动处理。
来到原始问题,捕获一对闪光/非闪光图像,我的步骤顺序如下:
在拍照时,我使用预览构建器开始自动对焦触发。
自动对焦完成后,我使用noflash和flash构建器(首先是 noflash,然后是 flash)背靠背提交两个仍然捕获的请求
但是,我得到的第一张图像是flash 图像,第二张是无 flash 图像。我不明白这种输出反转。
- JPEG 案例: 第一个图像始终是正确的 flash 图像,第二个图像始终是正确的非 flash 图像,如下所示:
对应于使用noflash builder
提交的请求的 Flash 图像:
对应于使用flash builder
提交的请求的无 flash 图像:
- YUV_420_888 案例:与 JPEG 相同,但是,noflash 图像永远不会正确。可以注意到右侧有一条白色条带以及不正确的颜色,而且非常嘈杂!
对应于使用noflash builder
提交的请求的 Flash 图像:
对应于使用flash builder
提交的请求的不正确的无 flash图像:
偏离路线,因为在 YUV_420_888 格式中,两个图像是背靠背捕获的,所以我在两者之间添加了一个预览请求以防止溢出。
我的问题是:
为什么输出图像的顺序颠倒了?
为什么 YUV_420_888 格式的无闪存图像不正确?
请帮忙。