<> 博客简介:Linux、rtos系统,arm、stm32等芯片,嵌入式高级工程师、面试官、架构师,日常技术干货、个人总结、职场经验分享
<> 公众号:嵌入式技术部落
<> 系列专栏:C/C++、Linux、rtos、嵌入式开发、流媒体、数据结构、网络协议、开源库、CMake、Makefile、架构设计模式等
前言
通过之前的文章【YUV】YUV图像详解(一)——格式详解,我们说过,我们将通过代码示例对YUV图片进行解析,以及推荐好用的查看YUV图像的工具软件,以便使读者更好的理解YUV。
一、YUV图像查看工具
先向大家推荐两款比较常用的 YUV 图像的查看工具----YUV Eye 和 7yuv,大家可以使用这两个工具,查看 YUV 图像。有的时候在进行开发调试的时候,有这样的工具会方便很多。
1、YUV Eye
(1) 下载地址:YUV Eye 3.0.0
(2) 解压,免安装,但是需要注册账号,在解压后的文件夹中找到 YuvEye.exe,双击打开,注册成功即可开始使用。
2、7yuv
(1) 下载地址:7yuv
(2) 需要安装,且需要license,不过此下载地址下载的是破解版的。
破解方法,7yuv.2.5-patch-URET.exe拷贝至安装目录,双击7yuv.2.5-patch-URET.exe,点击PATCH按钮,即完成破解,点击EXIT退出。
有任何疑问可评论区交流沟通,或关注公众号嵌入式技术部落,私信交流沟通。
二、代码示例
使用上图 input.jpg 来进行代码示例,图片分辨率为480*320。
1、分离420p
使用ffmpeg将指定的图片转为 yuv420p (I420) 格式
ffmpeg -i input.jpg -pix_fmt yuv420p yuv420p.yuv
根据之前文章【YUV】YUV图像详解(一)——格式详解,我们了解到,I420存储方式为
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
U U U
U U U
U U U
V V V
V V V
V V V
分离YUV分量:
void split_yuv420p_I420(char *inputPath, int width, int height) {
FILE *fp_yuv = fopen(inputPath, "rb+");
FILE *fp_y = fopen("output_420p_y.y", "wb+");
FILE *fp_u = fopen("output_420p_u.y", "wb+");
FILE *fp_v = fopen("output_420p_v.y", "wb+");
unsigned char *</