0

当用户单击捕获图片按钮时,我尝试了两种不同的方法来从 android 相机硬件捕获图像。一个调用 autoFocus 并在 autoFocusCallback 完成并成功响应后,捕获图像。二,在完全不调用 autoFocus 的情况下捕获图像。在这两种情况下,我注意到传递给 onPictureTaken 方法的结果字节数组具有不同的长度。在 autoFocus 成功完成并调用 autoFocusCallback 之后的那个通常比 autoFocus 调用被完全忽略时的那个大至少 50K 字节。为什么呢?有人可以发光吗?我不明白的是,当自动对焦成功完成时,应该' 图片质量好吗?通常质量是代表每个像素的 RGB 通道的每个字节中的位值。无论将什么位值加载到 RGB 字节中,像素的总数以及因此表示 RGB 通道的字节总数应该相同。但显然,在执行自动对焦后,为了获得更好的清晰度图像,与常规清晰度图像相比,似乎包含更多字节的数据。

研究了一个多月。非常感谢您的快速回答。

4

1 回答 1

0

所有图像/视频捕获驱动程序都使用 YUV 格式进行捕获。在大多数情况下,格式是 YUV420 或 YUV422。有关 YUV 格式的更多信息,请参阅此链接http://www.fourcc.org/yuv.php

正如您所提到的,自动对焦调用后拍摄的照片更加清晰(边缘更清晰,对比度更好),并且在没有自动对焦的情况下拍摄的图像缺少相同的清晰度。

如您所知,Jpeg 图像压缩用于压缩图像的数据,压缩基于宏块(图像中的方形块)。具有更清晰边缘和更多细节的图像比具有模糊的图像需要更多的编码系数,因为大多数相邻像素看起来已经被平均化了。这就是为什么自动对焦的图像绑定有更多的数据,因为它有更多的细节。

于 2012-03-30T04:46:29.630 回答