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