代码差不多同学写的 稍微改了下 目的在博客上备份
function bmp2yuv( bmpfile, yuvfile )
img = imread(bmpfile);r = double( img(:,:,1) );
g = double( img(:,:,2) );
b = double( img(:,:,3) );
y = round( 0.2126 * r + 0.7152 * g + 0.0722 * b );%(0.257*r + 0.504*g + 0.098*b + 16);
u = round( -0.1146*r - 0.3854*g + 0.5000*b +128 );%(-0.148*r - 0.291*g +0.439*b + 128);
v = round( 0.5000*r - 0.4542*g - 0.0468*b+128 );%(0.439*r - 0.368*g - 0.071*b + 128);
[h, w ] = size(r);
for i = 1 : (h/2)
for j = 1 : ( w/2 )
%(i,j) = 0.25 * ( v(2*i,2*j) + v(2*i-1,2*j-1)+ v(2*i, 2*j-1) + v(2*i-1,2*j) );
m = int32(i/2);
n = int32(j/2);
tv(i,j) = v(i*2 -1,j*2-1);
tu(i,j) = u(i*2-1,j*2-1);
end
end
outfid=fopen(yuvfile,'wb');
fwrite(outfid,y','uint8');
fwrite(outfid,tu','uint8');
fwrite(outfid,tv','uint8');
fclose(outfid);
end