当用户点击捕获图片按钮时,我尝试了两种不同的方法来从Android相机硬件捕获图像。一个调用autoFocus,在autoFocusCallback完成并成功响应后,捕获图像。二,捕获图像而根本不调用autoFocus。在这两种情况下,我都注意到传递给onPictureTaken方法的结果字节数组具有不同的长度。 autoFocus成功完成并调用autoFocusCallback之后,通常至少比完全忽略autoFocus调用时大50K字节。为什么会这样?有人会抛光吗?我不明白的是,当autoFocus成功完成时,图片不应该质量好吗?并且通常质量是表示每个像素的RGB通道的每个字节中的位的值。无论将哪些比特值加载到RGB字节中,像素的总数量以及由此表示RGB信道的总字节数应该是相同的。但显然,在执行自动聚焦之后,为了获得更清晰的图像,包含更多字节的数据,而不是常规的清晰度图像。
现在已经研究了一个多月了。非常感谢快速回答。
答案 0 :(得分:0)
所有图像/视频捕获驱动程序都使用YUV格式进行捕获。在大多数情况下,格式为YUV420或YUV422。有关YUV格式http://www.fourcc.org/yuv.php
的更多信息,请参阅此链接正如您所提到的,自动对焦调用后拍摄的照片更清晰(边缘更清晰,对比度更高),并且在没有自动对焦的情况下拍摄的图像中缺少相同的抖动。
如您所知,Jpeg图像压缩用于压缩图像数据,压缩基于宏块(图像中的方块)。具有更锐利边缘和更多细节的图像需要比具有模糊的图像更多的系数编码,因为大多数相邻像素看起来像是已经被平均化。这就是为什么自动聚焦图像绑定了更多数据的原因,因为它有更多的细节。