当图像宽高为奇数时,如何计算 I420 格式的uv分量大小

背景

I420 中 yuv 数据存放在3个 planes 中。

网上一般说 I420 数据大小为 widthheight 1.5

但是当 width 和 height 是奇数时,这个计算公式会有问题。

I420 中 u 和 v 的宽高分别为 y 的一半。

但是当不能整除时,是如何取整呢?向上还是向下,网上一般都没有细说。

求证过程

今天遇到个问题,和这个相关。网上查询和用 ffmpeg 实验了一下。

网上查询

问了 chatgpt

google 结果

https://groups.google.com/a/webmproject.org/g/webm-discuss/c/LaCKpqiDTXM

https://sourceforge.net/p/raw-yuvplayer/bugs/1/

使用 ffmpeg 测试

使用 windows 自动绘图系统,绘制3张 rgb 图片,保存成 bmp 图片。

使用 ffmpeg 命令将图片转化为视频。

使用 ffmpeg 命令将 Mp4 转换为 yuv420p 的 yuv 数据

使用 notepad 打开数据,计算 yuv 的数据长度。

最后计算结果和网络说的一样。

yuv player 播放该 yuv 数据正常

结论

uv 的宽高除以2,需要向上取整,以提高边缘像素精度。但是没有专业的定义,如果大家找到专业定义辛苦贴到评论中。

相关推荐
cv高级工程师YKY2 天前
SRE - - PV、UV、VV、IP详解及区别
大数据·服务器·uv
茫茫人海一粒沙14 天前
Python 包管理新选择:全面了解 uv(附 Conda 对比)
python·conda·uv
love530love17 天前
【笔记】解决部署国产AI Agent 开源项目 MiniMax-M1时 Hugging Face 模型下载缓存占满 C 盘问题:更改缓存位置全流程
开发语言·人工智能·windows·笔记·python·缓存·uv
love530love18 天前
MSYS2 环境下 Python 开发配置(结合 PyCharm)使用笔记
人工智能·windows·笔记·python·pycharm·virtualenv·uv
leo030824 天前
新一代python管理工具--uv
开发语言·python·uv
dudly24 天前
Python 轻量化环境管理利器 UV 入门与 Windows 下安装实战
python·项目管理·版本管理·uv·包管理·环境管理
MerlinTheMagic1 个月前
uv管理spaCy语言模型
人工智能·语言模型·uv
Scoful1 个月前
快速用 uv 模拟发布一个 Python 依赖包到 TestPyPI 上,以及常用命令
开发语言·python·uv
救救孩子把1 个月前
使用 uv 工具快速部署并管理 vLLM 推理环境
大模型·模型部署·uv·虚拟环境·vllm
Bro_Of_Nagi1 个月前
模型重展UV后绘制纹理
uv