【发布时间】:2015-01-07 14:49:03
【问题描述】:
在我的项目中,我使用OpenH264 编解码器,据说它以YUV 4:2:0 planar 格式输出数据。解码后,我得到一个数组,其中包含width * height * 1.5 元素,在显示时看起来像这样的图像:
http://o3d.googlecode.com/svn/trunk/samples_webgl/assets/shaving_cream.png
为什么在主要区域下方有四个区域(其中包含 Y - 负责灰度 - 元素),而不是像我的第二张图片上的两个?这是否意味着格式不同,还是我错了,我的世界刚刚崩溃?
我认为结果应该是这样的:
【问题讨论】:
-
从您的图像来看,您如何在线性内存中对 U 和 V 样本进行成像还不是很清楚。平面格式意味着在线性内存中将有 320x240 U 样本,然后是 320x240 V 样本(请参阅en.wikipedia.org/wiki/…)。如果您的图像表示图像应如何存储在内存中,那么您的假设是错误的,因为紫色框应该在黄色框下方。
-
谢谢你的回答,也是正确的。但我发现 Wikipedia 上的图片有点令人困惑 - 也许它太小而无法理解。
标签: c++ image-processing h.264 codec yuv