📄 img2num.m
字号:
function img = img2num( fname,pname )
%将一个320*240的图像转换为一个一维数组用于LCD的显示。输出在C:\img.c
%输入必须是一个320*240的图像
switch nargin
case 0
[fname,pname]=uigetfile('*.jpg;*.bmp');
if fname==0
disp('failed');
return;
end
filename=[pname fname];
case 1
filename=fname;
case 2
filename=[pname fname];
end
img_3d_array=imread(filename);
%将图像文件读入,此时读入的数组是一个三维的8位数组,
%将其按照16位(65536色)LCD的表示方法,将其变为一个一维数组
k=1;
for i=1:320
for j=1:240
% if j==150
% disp('j=150');
% end
r=double(img_3d_array(i,j,1));
g=double(img_3d_array(i,j,2));
b=double(img_3d_array(i,j,3));
red=uint16(floor(r/8)); %注意这个地方由于uint8型的数据计算后还是这个类型的数据,将其进行强制类型转换为16位无符号整数。
green=uint16(floor(g/4));
blue=uint16(floor(b/8));
%C=(uint32)red*(2^11)+green*(2^5)+blue;
img(k)=red*(2^11)+green*(2^5)+blue;
k=k+1;
end
end
fname='L:\6.c';
temp=[];
dlmwrite(fname,temp); %创建一个文件
fp=fopen(fname,'w');
%根据C语言的语法每行5个数共15360行,注意每个数后头加逗号,每5个数加入一个回车。
for i=1:15360
fprintf(fp, '%6u,', img(5*i-4));
fprintf(fp, '%6u,', img(5*i-3));
fprintf(fp, '%6u,', img(5*i-2));
fprintf(fp, '%6u,', img(5*i-1));
fprintf(fp, '%6u,\n', img(5*i-0));
end
fclose(fp);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -