Matlab 讀寫yuv檔案

2021-08-08 20:41:16 字數 1703 閱讀 8264

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...