收藏 分享(赏)

单片机抢答器C语言.doc

上传人:HR专家 文档编号:7597291 上传时间:2019-05-21 格式:DOC 页数:9 大小:639.50KB
下载 相关 举报
单片机抢答器C语言.doc_第1页
第1页 / 共9页
单片机抢答器C语言.doc_第2页
第2页 / 共9页
单片机抢答器C语言.doc_第3页
第3页 / 共9页
单片机抢答器C语言.doc_第4页
第4页 / 共9页
单片机抢答器C语言.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、数字视频技术课内实验报告实验一:读取 YUV 视频文件2013-2014 学年第 2 学期专业: 智能科学与技术班级: 智能 1102学号: 06113052姓名: 张克娟2014 年 3 月 21 日实验一:读取 YUV 视频文件 学时安排:2 实验类别:课内实验 一、实验目的和任务熟悉 MATLAB 软件开发环境,了解 YUV 色彩模型,编写 MATLAB 程序读取 YUV格式视频文件及各分量数据。二、实验原理利用 MATLAB 图像处理工具箱中的函数,在 MATLAB 编程环境下,实现 YUV 序列图像及各分量数据的读取。三、实验内容和步骤实验内容:1 运行 MATLAB 集成开发环境,

2、 编写 MATLAB 程序读取 YUV 视频文件,对 YUV各分量进行提取、观察和比较。2 编写 RGB 和 YUV 视频文件转换程序3 课后撰写实验报告。实验步骤:()读取 YUV 格式视频并提取分量1)读取 YUV 格式文件程序如下:function YUV_ReadShow(filename,frameNumMax,formatT)if nargin=0frameNumMax = 100;formatT = qcif;filename = C:Documents and SettingsAdministratorakiyo_qcif.yuv;endswitch formatTcaseqc

3、ifH = 144; W = 176; casecifH = 288; W = 352;otherwiseH = 480;W = 720;endfor frameNum = 1:frameNumMax;Y,U,V=yuv_import(filename,W,H,1,frameNum);tmp = Y1; img1 = zeros(H+H/2,W);img1(1:H,:) = Y1;img1(H+1:end,1:W/2) = V1;img1(H+1:end,W/2+1:end) = U1;subplot(121),imshow(uint8(img1);pause(1/30); endfuncti

4、on Y,U,V=yuv_import(filename,dims,numfrm,startfrm)fid=fopen(filename,r);if (fid 0)error(File does not exist!);end;Yd = zeros(dims(1),dims(2);UVd = zeros(dims(1)/2,dims(2)/2);frelem = numel(Yd) + 2*numel(UVd);if (nargin = 4) fseek(fid,startfrm * frelem , 0);end;Y = cell(1,numfrm);U = cell(1,numfrm);V

5、 = cell(1,numfrm);for i=1:numfrmYd = fread(fid,dims(1) dims(2),uint8); Yi = Yd;UVd = fread(fid,dims(1)/2 dims(2)/2,uint8);Ui = UVd;UVd = fread(fid,dims(1)/2 dims(2)/2,uint8);Vi = UVd;end;fclose(fid);结果如下:2)分量提取程序如下:%读取 YUV 格式视频程序function yuvfname,pname=uigetfile(*.yuv;*.jqcif);%获得文件路径 FileName=fullf

6、ile(pname,fname); %选择文件FileLength=length(FileName);%判断打开的是 YUV 格式视频还是 QCIF 格式图片,并设置相应的像素大小if(FileName(FileLength-2:1:FileLength)=yuv)wide=176*2;high=144*2;endif(FileName(FileLength-3:1:FileLength)=qcif)wide=176;high=144;endFile=fopen(FileName);%打开文件framenumber=input(读取第几帧:);%从第 framenumber 帧开始读取数据fs

7、eek(File,(framenumber-1)*high*wide*3/2,bof);%读取相应分量数据Y=double(fread(File,wide,high,uint8);U=double(fread(File,wide/2,high/2,uint8);V=double(fread(File,wide/2,high/2,uint8);%显示 YUV 各图像分量figure(1);subplot(2,2,1)imshow(uint8(Y);title(第 num2str(framenumber) 帧 Y 分量图);subplot(2,2,2)imshow(uint8(U);title(第

8、 num2str(framenumber) 帧 U 分量图);subplot(2,2,3)imshow(uint8(V);title(第 num2str(framenumber) 帧 V 分量图);实验结果:(二)YUV 与 RGB 互相转换程序如下:%YUV格式与RGB格式视频相互转换程序function rgbfname,pname=uigetfile(*.yuv;*.jqcif );%获得文件路径 FileName=fullfile(pname,fname); %选择文件FileLength=length(FileName);%获取文件名长度%判断打开的是 YUV格式视频还是QCIF 格

9、式图片,并设置相应的像素大小if(FileName(FileLength-2:1:FileLength)=yuv)wide=176*2;high=144*2;endif(FileName(FileLength-3:1:FileLength)=qcif)wide=176;high=144;endFile=fopen(FileName);%打开文件picture=zeros(1.5*high,wide);framenumber=input(读取第几帧:);%从第framenumber帧开始读取数据fseek(File,(framenumber-1)*high*wide*3/2,bof);%读取相应

10、分量数据Y=double(fread(File,wide,high,uint8);U=double(fread(File,wide/2,high/2,uint8);V=double(fread(File,wide/2,high/2,uint8);%将YUV三分量图像拼接成一幅图片picture(1:high,1:wide)=Y;picture(high+1:1.5*high,1:wide/2)=U;picture(high+1:1.5*high,wide/2+1:wide)=V;Y1(1:high/2,1:wide/2)=Y(1:2:high,1:2:wide);%将Y 分量图像缩小一半%将Y

11、UV各分量图像通过公式转换为RGB各分量R = Y1 + 1.14*(V-128);G = Y1 - 0.39*(U-128) - 0.58*(V-128);B = Y1 + 2.03*(U-128);%将R,G,B各分量合成RGB图像picture1=zeros(high/2,wide/2,3);picture1(:,:,1)=R;picture1(:,:,2)=G;picture1(:,:,3)=B;RGB=uint8(cat(3,R,G,B);%图像结果显示figure(1);subplot(1,2,1);imshow(uint8(picture);title(第 num2str(framenumber) 帧YUV格式图像各分量图);subplot(1,2,2);imshow(RGB);title(第 num2str(framenumber) 帧转换为RGB图像显示);结果如下:四、注意事项和要求预先复习预习 MATLAB 图像编程知识,复习视频文件格式和各种格式转换原理。五、实验心得通过这次的实验使我对 MATLAB 软件开发环境有了更多的认识和 YUV 色彩模型,基本了解了利用 MATLAB 图像处理工具箱中的函数怎样编写 MATLAB 程序读取 YUV 格式视频文件及各分量数据。六、参考书目数字视频技术教材。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报