rgb图像转换为二进制bin文件格式(matlab)

在进行实际工程传输时,有时需要将测试图例通过异步串口进行传输,首先就需要将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的写法将其封装为路径,长宽,数据格式自定义的函数。 

  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 可以通过MATLAB的`imread`函数读取图像,将图像转换二进制比特流的方法是使用MATLAB的`dec2bin`函数将每个像素值转换二进制数,然后将所有像素值的二进制数连接起来形成一个比特流。 以下是一个简单的示例代码,演示了如何将图像转换二进制比特流: ```matlab % 读取图像 I = imread('image.jpg'); % 将图像转换为单通道灰度图像 I_gray = rgb2gray(I); % 将像素值转换二进制binary = dec2bin(I_gray(:), 8); % 将二进制数连接起来形成比特流 bitstream = reshape(binary', 1, []); % 将比特流转换为字节流 byte_array = reshape(bitstream', 8, [])'; byte_array = bin2dec(byte_array); % 将字节流写入文件 fid = fopen('output.bin', 'w'); fwrite(fid, byte_array, 'uint8'); fclose(fid); ``` 在这个例子中,我们首先使用`imread`函数读取图像,然后使用`rgb2gray`函数将图像转换为单通道灰度图像。接下来,我们使用`dec2bin`函数将每个像素值转换为8位二进制数,并使用`reshape`函数将这些二进制数连接起来形成比特流。最后,我们将比特流转换为字节流,然后使用`fwrite`函数将字节流写入文件。 ### 回答2: MATLAB中可以将图像转换二进制比特流的方法有很多种,以下是一种常见的方法: 首先,需要读取图像文件。可以使用MATLAB中的imread函数来读取图像文件,例如: img = imread('image.jpg'); 然后,将图像转换成灰度图像。可以使用MATLAB中的rgb2gray函数将彩色图像转换为灰度图像,例如: gray_img = rgb2gray(img); 接下来,将灰度图像转换二进制比特流。可以使用MATLAB中的de2bi函数将每个像素的灰度值转换为对应的二进制比特流,例如: binary_stream = de2bi(gray_img); 最后,可以保存二进制比特流到文件中。可以使用MATLAB中的fwrite函数将二进制比特流写入文件,例如: fid = fopen('binary_stream.txt', 'w'); fwrite(fid, binary_stream, 'ubit1'); fclose(fid); 以上就是将MATLAB图像转换二进制比特流的简单步骤。当然,根据具体需求,还可以进行一些额外的处理,例如图像压缩、图像编码等。 ### 回答3: 要将MATLAB图像转换二进制比特流,你可以按照以下步骤进行: 1. 读取图像:使用MATLAB的imread函数读取图像文件。该函数将图像读取为一个矩阵,其中每个元素表示图像中的像素值。 2. 转换为灰度图像:如果图像是彩色图像,则可以使用MATLABrgb2gray函数将其转换为灰度图像。这样可以使每个像素只占用一个字节,方便后续转换二进制比特流。 3. 将图像矩阵转换为一维向量:使用MATLAB的reshape函数将图像矩阵转换为一维向量。这将方便后续处理每个像素的比特值。 4. 将灰度值转换二进制比特流:对于每个像素的灰度值,可以使用MATLAB的dec2bin函数将其转换为8位二进制数。这将给出一个包含图像中所有像素的二进制比特流。 5. 拼接比特流:将每个像素的二进制比特流拼接起来,形成一个完整的二进制比特流。可以使用MATLAB的cat函数或vertcat/horzcat函数进行拼接。 6. 保存为二进制文件:最后,使用MATLAB的fwrite函数将二进制比特流保存为二进制文件。你可以选择以不同的文件格式保存,如txt或dat。 总之,以上步骤描述了将MATLAB图像转换二进制比特流的基本过程。你可以根据具体需求对转换过程进行修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值