function readout=myBMPread
%读取BMP图片
filterspec={
'*.bmp','BMP(*.bmp)';
};
[filename,filepath]=uigetfile(filterspec,'Select a file');
fullpath=[filepath filename]
bmp=fopen(fullpath);%读入图像
if(bmp~=-1)
fseek(bmp,28,-1);
bitdepth=fread(bmp,1,'int')
fseek(bmp,10,-1); %是图像从文件开始到图像数据间的偏移量
offset=fread(bmp,1,'int')
status=fseek(bmp,18,-1); %图像宽度
imwidth=fread(bmp,1,'int')
status=fseek(bmp,22,-1); %图像高度
imheight=fread(bmp,1,'int')
end
% 根据位深不同选择不同处理方式
if(bitdepth==8)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%读取灰度图像
readout=zeros(imheight,imwidth);
readout=uint8(readout);
fseek(bmp,offset,-1);%定位到图像数据开始区域
for i=1:imheight
for j=1:imwidth
position=offset+(i-1)*imheight+j;
readout(imheight-i+1,j)=fread(bmp,1,'uint8'); %从最后一行开始存储
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%以下为读入24位图像
elseif(bitdepth==24)
r=zeros(imheight,imwidth);
g=zeros(imheight,imwidth);
b=zeros(imheight,imwidth);
fseek(bmp,offset,-1);%偏移量为offset,开始读取数据存储区域
for i=1:imheight
for j=1:imwidth
R(imheight-i+1,j)=fread(bmp,1,'uint8');
G(imheight-i+1,j)=fread(bmp,1,'uint8');
B(imheight-i+1,j)=fread(bmp,1,'uint8');
end
end
for i=1:imheight
for j=1:imwidth
Color (i,j,1)=R(i,j);
Color (i,j,2)=G(i,j);
Color (i,j,3)=B(i,j);
end
end
readout=uint8(Color);
end
fclose('all'); %关闭所有文件
bmp.zip_bmp图像_bmp图像读取_imread_matlab读取bmp_图像读取 bmp
版权申诉
5星 · 超过95%的资源 181 浏览量
2022-07-14
17:31:00
上传
评论 1
收藏 493KB ZIP 举报
我虽横行却不霸道
- 粉丝: 72
- 资源: 1万+
最新资源
- 嵌入式基础学习资料0000
- content_1714465331721.xls
- HM3401-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- Chainbase+Web3+APi+Data warehouse
- HM3401D-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- GEE案例-1990-2023年计算某个区域的NDVI时序变化轨迹(以徐州市为例)含全部代码.pdf
- HM3401C-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- 沈丘盛世龙门图纸符合规范化
- 基于51单片机带LCD1602显示+温度补偿的超声波测距仪设计软硬设计+仿真+文档资料.zip
- 一、K210是什么? K210全称为堪智K210,是嘉楠科技自主研发的一款采用RISC-V处理器架构,具备视听一体、自主IP内核
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论2