1. 程式人生 > >使用Matlab顯示OV5642輸入的YUV影象

使用Matlab顯示OV5642輸入的YUV影象

YUV格式的影象有很多種顏色空間和儲存格式,這裡使用的是YUYV4:2:2模式。

YUYV4:2:2模式的取樣方式如下所示。


其儲存格式為YUV422-Interleaved,如下圖所示。


在正確理解了YUYV4:2:2格式之後才能編寫Matlab程式來顯示影象,否則顯示的影象可能出現奇怪的顯示效果。使用Matlab顯示YUV影象的程式碼如下所示:

fid = fopen('camera5.yuv', 'r' );

if fid == -1

    error('Cannot open file.');

end

hor = 640;

ver = 480;

for i=1:ver

    picture(i,:) = fread(fid, hor * 2, 'uint16');

end

fclose(fid);

picture = round((picture ./ 1024) * 256);

y = uint8(zeros(ver, hor));

u = uint8(zeros(ver, hor));

v = uint8(zeros(ver, hor));

for i = 1:ver

    for j = 1:4:hor * 2

        y(i, (j + 1)/2) = picture(i, j);

        u(i, (j + 1)/2) = picture(i, j + 1);

        u(i, (j + 3)/2) = picture(i, j + 1);

        y(i, (j + 3)/2) = picture(i, j + 2);

        v(i, (j + 1)/2) = picture(i, j + 3);

        v(i, (j + 3)/2) = picture(i, j + 3);

    end

end

frame(:, :, 1) = y;

frame(:, :, 2) = u;

frame(:, :, 3) = v;

rgb = ycbcr2rgb(frame);

figure,imshow(rgb);