使用Matlab显示OV5642输入的YUV图像

来源:互联网 发布:模具制图软件 编辑:程序博客网 时间:2024/06/15 02:23

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);



 

原创粉丝点击