博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
入门视频采集与处理(显示YUV数据)
阅读量:6686 次
发布时间:2019-06-25

本文共 1879 字,大约阅读时间需要 6 分钟。

关于如何显示原始的YUV码流,根据我的经验,一般有三种方法:

(1) 利用 matlab ,写相关的程序进行显示。(本文我将提供相关显示程序)

(2) 使用 MFC + Direct Draw 来实现。(稍后整理好了再提供出来)

(3) 使用 第三方工具(YUVviewerPlus.exe),很好的软件。(在附件中提供)

    

由于使用matlab来进行图像的显示,程序代码简单易懂,直观,维护和修改方便,方便根据不同的图像尺寸和YUV码流存储方式进行相应的修改,故本文重点进行讨论。

    

对于采集的图像,我们一般需要重点关注Y分量是否正确,直接显示Y分量数据就可以看到灰度图像,根据显示的灰度图像,我们可以很快地判断出图像的轮廓是否正确。大家可以根据上一节的内容提取出码流中某一帧的Y分量内容,利用下面的程序在matlab中进行显示。

    

测试条件: 【图像的尺寸】:720x576;【文件内容】:只有一帧图像的Y分量;

function yuvtest(filename) % 打开图像文件 fid = fopen(filename,'r'); if fid == -1    error('the file can not open '); end line  = 576;  %图像的高 colom = 720;  %图像的宽 im = zeros(line,colom); for i1 = 1:line    im(i1,:) = fread(fid,colom);  %读取数据到矩阵中 end im = im./255;      %归一化 figure,imshow(im); %显示图像     fclose(fid); end   

当然,上述程序只能显示出灰度图像,如果希望显示彩***像,则首先需要把YUV码流转换为RGB数据流,转换公式如下:

// 转换公式(浮点方式) R = Y + 1.4075*(V-128) G = Y - 0.3455*(U-128) - 0.7169*(V-128) B = Y + 1.779*(U-128)

    

至于每一个像素点的YUV分量的值该怎么取,请参考本文开头提到的那篇文章,无论是YUV444、YUV422、还是YUV420格式,根据对应的方法提取完YUV并转换为RGB数据后,其文件大小应该是: 图像的高 * 图像的宽 * 3 。由于不同的YUV码流转换为RGB数据的提取方式均不相同,这里我就不提供统一的转换程序了,大家根据公式和提取YUV的方法自己来转换。

    

在写文件的时候,可以考虑以如下的存储格式:

R R R R R  R R R R R  R R R R R   G G G G G  G G G G G  G G G G G   B B B B B  B B B B B  B B B B B

   

存好转换后的RGB文件后,可以利用我提供的下面这个matlab程序进行显示,即可看到彩***像。

     

测试条件: 【图像的尺寸】:720x576;【文件内容】:由R、G、B三个分量分块组成的图像数据;

function showrgb(inputFile) % 初始化  width = 720;   %图像的宽 height = 576;  %图像的高 %打开文件 fid = fopen(inputFile); %读取数据 if fid ~= -1   img = uint8(zeros(height,width,3));    img_t = uint8(zeros(height,width));   for i1=1:3     for i2=1:height         img_t(i2,:)=fread(fid,width);      end       img(:,:,i1) = img_t;    end figure,imshow(img); fclose(fid); end

到此,怎样使用matlab显示YUV码流的灰度图像和彩***像就说到这里了,当然,附件中有一个工具"YUVviewerPlus.exe"也特别好用,可以直接选择YUV码流的格式进行显示。不过我依然建议大家自己动手写相关的matlab程序或者MFC程序来分析自己的码流,这样就可以根据实际情况相应修改代码,而不用局限于人家的软件了。

本文转自 Jhuster 51CTO博客,原文链接:http://blog.51cto.com/ticktick/568928,如需转载请自行联系原作者
你可能感兴趣的文章
共享单车步入物联网军备战
查看>>
斯坦福 CS183c 闪电式扩张(Blitzscaling)中文笔记
查看>>
MySQL时间戳与日期互转
查看>>
摘下月亮送给爱人?AstroReality用AR技术帮你实现
查看>>
PHP 魔术变量
查看>>
推荐的PHP编码规范
查看>>
从Linley Group预测报告看物联网四大趋势
查看>>
【AI科幻】地球陨落·真相(中)
查看>>
Gartner报告:东方金信进入Hadoop世界厂商名录
查看>>
参加2017开放数据中心峰会,探2020数据中心网络十大热点问题
查看>>
Python_(1)数据类型及其常见使用方法(图文)
查看>>
如何查看WWN号
查看>>
主页被劫持问题
查看>>
linux中awk学习小结
查看>>
MySQL主从的一致性校验及修复
查看>>
Skype For Business 2015实战系列5:安装后端数据库
查看>>
Microsoft Security Essentials 中文版正式发布
查看>>
JSF Note
查看>>
自定义支持多行显示的RadioGroup
查看>>
tty终端截屏软件FbGrab安装和使用
查看>>