clear all; clc;
fid = fopen('data/testing/down.yuv','r'); %讀入檔案
fod = fopen('data/testing/test.yuv','w'); %輸出檔案
row=768/2;col=1024/2; %影象的高、寬
frames=97; % total=97
%序列的幀數
for frame=1:frames
%讀入檔案 將yuv轉換為rgb,並用imshow顯示
% im_l_y=fread(fid,[row,col],'uchar'); %錯誤的讀入
im_l_y = zeros(row,col); %y
for i1 = 1:row
im_l_y(i1,:) = fread(fid,col); %讀取資料到矩陣中
endim_l_cb = zeros(row/2,col/2); %cb
for i2 = 1:row/2
im_l_cb(i2,:) = fread(fid,col/2);
endim_l_cr = zeros(row/2,col/2); %cr
for i3 = 1:row/2
im_l_cr(i3,:) = fread(fid,col/2);
end%由於輸入的yuv檔案為4:2:0,所以cbcr要改變大小,
%否則im_l_ycbcr(:, :, 2) =im_l_cb;會出現錯誤
im_l_cb = imresize(im_l_cb, [row, col], 'bicubic');%改變影象的大小
im_l_cr = imresize(im_l_cr, [row, col], 'bicubic');
im_l_ycbcr = zeros([row, col, 3]);
im_l_ycbcr(:, :, 1) = im_l_y;
im_l_ycbcr(:, :, 2) = im_l_cb;
im_l_ycbcr(:, :, 3) = im_l_cr;
im_l = ycbcr2rgb(uint8(im_l_ycbcr)); %將ycbcr轉換為rgb
% figure, imshow(im_l);title('down');
%輸出檔案 將rgb轉換為yuv
im_t_ycbcr = rgb2ycbcr(im_l); %將rgb轉換為ycbcr
im_t_y = im_t_ycbcr(:, :, 1); %y
im_t_cb = im_t_ycbcr(:, :, 2); %cb
im_t_cr = im_t_ycbcr(:, :, 3); %cr
im_l_cb = imresize(im_l_cb, [row/2, col/2], 'bicubic');%改變影象的大小
im_l_cr = imresize(im_l_cr, [row/2, col/2], 'bicubic');
for i1 = 1:row
fwrite(fod,im_l_y(i1,:)); %輸出到檔案中
endfor i1 = 1:row/2
fwrite(fod,im_l_cb(i1,:));
endfor i1 = 1:row/2
fwrite(fod,im_l_cr(i1,:));
endend
如何使用MATLAB語言讀寫YUV檔案
本文詳細介紹了如何使用matlab進行讀寫yuv檔案,並給出了詳細的 及其分析。示例程式如下 close all clear fid1 fopen d hm 14.0 roi bin vc10 win32 release result 背景建模result hall cif 352x288 300 ...
MATLAB如何讀寫檔案
很多時候,使用matlab生成資料和處理是一種不錯的選擇,往往需要讀取指定路徑的檔案,有時候還需要遍歷檔案,或者將處理的資料儲存在指定路徑的檔案之中,那麼如何使用matlab來讀寫檔案呢?if exist d path dir mkdir d path endfid fopen path,r pro...
matlab讀寫Excel檔案
examp7.2 1 code by ariszheng gmail.com 2010 6 22 檔名稱 excel.xls typ,desc,fmt xlsfinfo excel.xls 檔案在當前工作目錄下,直接輸入檔名稱即可。system taskkill f im excel.exe exa...