在进行实际工程传输时,有时需要将测试图例通过异步串口进行传输,首先就需要将rgb格式的文件转换为bin文件。csdn上主要是c++等例程。matlab代码更加直观,不需要配置,下面提供个人写的将1080p jpg图像转换为RGB565格式的二进制文件例程
clear
src_dir=strcat('./test565.bin');%绝对路径
img = imread("test.jpg");
r= img(:,:,1);
g= img(:,:,2);
b= img(:,:,3);
r2 =dec2bin(reshape(r',[1 1920*1080]));
g2 =dec2bin(reshape(g',[1 1920*1080]));
b2 =dec2bin(reshape(b',[1 1920*1080]));
rgb16 = uint8(zeros(1,1920*1080*2));
for k = 1:1920*1080
im1= bin2dec([r2(k,1:5),g2(k,1:3)]);
im2= bin2dec([g2(k,4:6),b2(k,1:5)]);
rgb16(1,(2*k-1)) =uint8(im1);
rgb16(1, 2*k) = uint8(im2);
end
fid=fopen(src_dir,'w');%打开文件
for i =1:1080*1920*2
fwrite(fid,rgb16(i));%写入i并换行
end
fclose(fid);%关闭文件
在BES中以十六进制等长帧进行数据编辑,帧长设置为1920,结果如图,得到2160帧,数量正确:
通过串口->DDR->HDMI驱动成功显示:
可以根据自己的需要将其存储为rgb888格式的二进制文件,也可以通过function的写法将其封装为路径,长宽,数据格式自定义的函数。