将图片中RGB888转为RGB565,采用的是取高位的方式。
clc; clear all;
% 读取图片
img = imread('your_image.jpg'); % 替换 'your_image.jpg' 为您的图片文件名
% 获取图片尺寸
[height, width, ~] = size(img);
% 初始化字符串数组(一列)
data = strings(height * width, 1);
% 转换每个像素的 RGB 数据为字符串
index = 1;
for row = 1:height
for col = 1:width
r = bitshift(img(row, col, 1), -3); % 提取红色高5位,右移3位
g = bitshift(img(row, col, 2), -2); % 提取绿色高6位,右移2位
b = bitshift(img(row, col, 3), -3); % 提取蓝色高5位,右移3位
% 合并三组数据为一个 16 位二进制数,并转换为 16 进制字符串
rgb_combined = bitor(bitor(bitshift(uint16(r), 11), bitshift(uint16(g), 5)), uint16(b));
hex_str = sprintf('%04X', rgb_combined);
% 存储结果到 data 变量
data(index) = hex_str;
index = index + 1;
end
end
% 将数据写入 .coe 文件
fileID = fopen('output.coe', 'w');
fprintf(fileID, 'memory_initialization_radix = 16;\n');
fprintf(fileID, 'memory_initialization_vector =\n');
for i = 1:numel(data)
fprintf(fileID, '%s\n', data(i)); % 添加回车,每个数据独占一行
end
fprintf(fileID, ';\n'); % 添加最后一行分号
fclose(fileID);
disp('数据已写入 output.coe 文件。');
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删