Ostatnio zajmuję się zagadnieniem konwersji między systemami PAL<->NTSC<->SECAM. Pracuję na składowych Y,U,V obrazu. Spotkałem się z problemem jak zapisać sekwencję danych (fragment filmu) w nich przechowywane do pliku *.YUV. Oto moje autorskie rozwiązanie:
%***************************************************
% Function to store Y, U, V data into a *.YUV file
%
% To use this funtion, call it with:
% writeyuv(y,u,v,filename,type,frames)
% y,u,v - YUV components (three 2D or 3D arrays)
% type - 1: append, 0: overwrite
% frames - number of frames to save in file
%
% coded by Michal Walus
% wmichal.wordpress.com
%***************************************************
function []=writeyuv(y,u,v,filename,type,frames)
if type == 1
fid = fopen(filename,'ab');
else
fid = fopen(filename,'w');
end
if nargin==5
fwrite(fid,y','uint8');
fwrite(fid,u','uint8');
fwrite(fid,v','uint8');
elseif nargin==6
for i=1:1:frames
yy=y(:,:,i); uu=u(:,:,i); vv=v(:,:,i);
fwrite(fid,yy','uint8');
fwrite(fid,uu','uint8');
fwrite(fid,vv','uint8');
end
end
clear y u v yy uu vv
fclose(fid);