YUV快速入门:嵌入式开发必须记住的4件事
YUV视频处理核心要点:1. YUV通过分离亮度和色度信息节省空间,4:2:0格式是主流;2. NV12是最常见的内存排列方式,分为连续Y和交错UV两部分;3. 转换RGB必须使用硬件加速,避免CPU计算。掌握这三点即可应对90%的视频处理场景。
目录
朋友,别担心,YUV没那么复杂。你暂时只需要记住下面这四件“大事”,就足够你应对后面90%的场景了。
1. 为什么用YUV?一句话:省空间!
-
记住这个比喻:视频数据就像一张“高分辨率的黑白照片(Y)”上面覆盖了一张“低分辨率的彩色透明膜(UV)”。
-
核心思想:我们的眼睛对黑白明暗(亮度Y)超级敏感,但对颜色(色度UV)有点“迟钝”。所以,我们完整保留了清晰的黑白信息,但把颜色信息处理得“粗糙”一些(比如4个像素共用一套颜色),这样人眼也基本看不出来,但数据大小却几乎减半了!
-
你的任务:知道YUV是为了压缩数据,节省带宽和存储。这就够了。
2. 记住最重要的格式:YUV 4:2:0
-
别管4:4:4, 4:2:2... 你在实际工作中,特别是在和H.264/H.265视频编码器打交道时,99%遇到的都是 YUV 4:2:0。
-
它是什么意思:就是我们上面那个比喻的实现,即“4个亮度像素(Y)共用1组色度信息(UV)”。
-
你的任务:当看到“视频编码”、“网络传输”、“MP4文件”这些字眼时,脑子里直接冒出“YUV 4:2:0”这个词。
3. 记住最常见的内存排列:NV12
-
别管I420, YUYV... 在当今的手机、摄像头、嵌入式芯片里,硬件最喜欢、处理效率最高的格式就是 NV12。
-
它长什么样:内存里分成两块。
-
第一块:连续存放所有像素的亮度(Y)。
-
第二块:连续存放交错的颜色(UVUVUV...)。
-
-
你的任务:当你要把摄像头数据送给硬件编码器,或者把解码后的数据送去显示时,硬件接口要的八成就是NV12格式。你知道数据是这么两块存放的,就能正确地把内存地址传给硬件。
4. 记住黄金法则:绝对不要用CPU转RGB!
-
最终显示在屏幕上确实需要RGB格式,但这个转换工作不是你用代码“算”出来的!
-
谁来做?:你的芯片里有专门的硬件(叫显示控制器或GPU),它能瞬间完成YUV到RGB的转换。
-
你的任务:你只需要告诉这个硬件:“嗨,我的NV12格式的视频数据在这儿(告诉它Y和UV的内存地址)”,然后硬件就会搞定一切。千万不要自己写for循环去逐个像素计算,那会让你的设备卡到爆。
总结一下,你需要带走的知识就这几条:
-
YUV是为了省空间。
-
视频格式基本都是YUV 4:2:0。
-
硬件接口最爱NV12内存格式。
-
转换工作交给硬件,CPU不动手。
记住这几点,你就可以安心地进入下一阶段的学习了。当以后遇到具体问题时,再回来看那份详细的文档也不迟!
更多推荐



所有评论(0)