【问题标题】:Extra bytes on the end of YUV buffer - RaspberryPiYUV 缓冲区末尾的额外字节 - RaspberryPi
【发布时间】:2013-12-19 05:57:41
【问题描述】:

我已经开始编辑 RaspiStillYUV.c 代码。我最终想处理收到的图像,但现在,我只是在努力理解它。为什么我使用 YUV 而不是 RGB?所以我可以学到新的东西。我对函数camera_buffer_callback 做了一些小改动。我正在做的事情如下:

fprintf(stderr, "GREAT SUCCESS! %d\n", buffer->length);

这是替换的行:

bytes_written = fwrite(buffer->data, 1, buffer->length, pData->file_handle);

现在,尺寸应该是代码中设置的2592 x 1944 (w x h)。处理维基百科 (YUV420) 我得出的结论是文件大小应该是w * h * 1.5。因为 Y 分量每个像素有 1 个字节的数据,而 U 和 V 分量每 4 个像素有 1 个字节的数据(1 + 1/4 + 1/4 = 1.5)。伟大的。用 Python 做数学运算:

>>> 2592 * 1944 * 1.5
7558272.0

不幸的是,这与我的程序的输出不一致:

GREAT SUCCESS! 7589376

这会留下 31104 字节的差异。

我认为缓冲区是按固定大小的块分配的(输出大小可以被 512 整除)。虽然我想了解这个谜团,但我对固定大小的块解释很好。

我的问题是我是否遗漏了什么。超出预期大小的额外字节在这种格式中是否有意义?他们应该被忽略吗?我的计算有问题吗?

【问题讨论】:

  • yuv 缓冲区有未使用的尾随字节是很常见的,但我不知道特定于 raspberry 的详细信息。
  • 对于看到这个的其他人。我已经切换到 SimpleCV 和 Python。我(不是太重)修改过的 RaspiStillYUV 代码在 8 秒内完成了大约 10 张图像。 SimpleCV 每秒执行约 7 次。两个样本均未进行额外处理。您可以使用 uv4l 驱动程序将相机作为视频设备,以便与 SimpleCV 一起使用。

标签: camera raspberry-pi yuv


【解决方案1】:

此位置的文档支持您的填充理论:http://www.raspberrypi.org/wp-content/uploads/2013/07/RaspiCam-Documentation.pdf

具体来说:

请注意,保存在 raspistillyuv 中的图像缓冲区被填充到 水平大小可被 16 整除(因此在 每行的末尾使宽度可被 16 整除)。缓冲区也是 垂直填充以被 16 整除,在 YUV 模式下,每个 Y,U,V的平面就是这样填充的。

所以我对此的解释如下。 宽度为 2592(可被 16 整除,所以可以)。 高度为 1944,比可被 16 整除少 8,因此添加了额外的 8*2592(也乘以 1.5),从而为您提供了 31104 额外字节。

虽然这种方法有助于减小文件的大小,但它并不能正确解释 YUV 输出的结构。我正在查看这个描述,看看它是否提供了一个开始的提示:http://en.wikipedia.org/wiki/YUV#Y.27UV420p_.28and_Y.27V12_or_YV12.29_to_RGB888_conversion

由此我认为是这样的:

Y频道:

2592 * (1944+8) = 5059584

U 频道:

1296 * (972+4) = 1264896

V 频道:

1296 * (972+4) = 1264896

给出一个总和:

5059584 + 2*1264896 = 7589376

这使得数字加起来,所以剩下的就是确认这个解释是否正确。

我也在尝试进行 YUV 解码(用于图像比较),所以如果您能确认这是否确实与您在 YUV 文件中读取的内容相对应,我们将不胜感激。

【讨论】:

  • 今晚我会在我启动我的 pi 时检查它并跟进确认。不过,这是有道理的。非常感谢!
【解决方案2】:

您必须仔细阅读手册。缓冲区填充为 16 的倍数,但颜色数据是一半大小,因此您的图像大小需要为 32 的倍数,以避免填充破坏外部软件的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 2013-03-20
    • 2018-07-07
    相关资源
    最近更新 更多