function data=read_ENVIimagefile_img(imgfilename)
%本函数读取img格式,前提是img图像显式带有'.img'后缀名。
if length(imgfilename)>=4switch strcmp(imgfilename(length(imgfilename)-3:end), '.img')case 0hdrfilename=strcat(imgfilename, '.hdr');case 1hdrfilename=strcat(imgfilename(1: (length(imgfilename)-4)), '.hdr');
end
elsehdrfilename=strcat(imgfilename, '.hdr');
end
%读取ENVI标准格式图像文件
%读取图像头文件
fid = fopen(hdrfilename, 'r');
info = fread(fid,'char=>char');
info=info';%默认读入列向量,须要转置为行向量才适于显示
fclose(fid);
%查找列数
a=strfind(info,'samples = ');
b=length('samples = ');
c=strfind(info,'lines');
samples=[];
for i=a+b:c-1samples=[samples,info(i)];
end
samples=str2num(samples);
%查找行数
a=strfind(info,'lines   = ');
b=length('lines   = ');
c=strfind(info,'bands');
lines=[];
for i=a+b:c-1lines=[lines,info(i)];
end
lines=str2num(lines);
%查找波段数
a=strfind(info,'bands   = ');
b=length('bands   = ');
c=strfind(info,'header offset');
bands=[];
for i=a+b:c-1bands=[bands,info(i)];
end
bands=str2num(bands);
%查找数据类型
a=strfind(info,'data type = ');
b=length('data type = ');
c=strfind(info,'interleave');
datatype=[];
for i=a+b:c-1datatype=[datatype,info(i)];
end
datatype=str2num(datatype);
precision=[];
switch datatypecase 1precision='uint8=>uint8';%头文件中datatype=1对应ENVI中数据类型为Byte,对应MATLAB中数据类型为uint8case 2precision='int16=>int16';%头文件中datatype=2对应ENVI中数据类型为Integer,对应MATLAB中数据类型为int16case 12precision='uint16=>uint16';%头文件中datatype=12对应ENVI中数据类型为Unsighed Int,对应MATLAB中数据类型为uint16case 3precision='int32=>int32';%头文件中datatype=3对应ENVI中数据类型为Long Integer,对应MATLAB中数据类型为int32case 13precision='uint32=>uint32';%头文件中datatype=13对应ENVI中数据类型为Unsighed Long,对应MATLAB中数据类型为uint32case 4precision='float32=>float32';%头文件中datatype=4对应ENVI中数据类型为Floating Point,对应MATLAB中数据类型为float32case 5precision='double=>double';%头文件中datatype=5对应ENVI中数据类型为Double Precision,对应MATLAB中数据类型为doubleotherwiseerror('invalid datatype');%除以上几种常见数据类型之外的数据类型视为无效的数据类型
end
%查找数据格式
a=strfind(info,'interleave = ');
b=length('interleave = ');
c=strfind(info,'sensor type');
interleave=[];
for i=a+b:c-1interleave=[interleave,info(i)];
endinterleave=strtrim(interleave);%删除字符串中的空格
%读取图像文件
fid = fopen(imgfilename, 'r');
data = multibandread(imgfilename ,[lines, samples, bands],precision,0,interleave,'ieee-le');
data= double(data);
end

matlab 读取ENVI中*.img格式图片代码相关推荐

  1. C语言读取和存储bmp格式图片

    开发过程中有时候需要解析bmp数据,下面先简单介绍bmp数据组成,后面附上C语言读取和存储bmp格式图片代码. 典型的位图文件格式通常包含下面几个数据块: BMP文件头:保存位图文件的总体信息. 位图 ...

  2. MATLAB编程:简易读取分割存储 tif 格式图片

    MATLAB编程:简易读取分割存储 tif 格式图片 前言 一.介绍 二.MATLAB实现 三.总结 前言   本博主使用的MATLAB版本是2020b,这个版本可以使用许多有趣的扩展APP,本节将会 ...

  3. matlab 多个波段,MatLab读取ENVI图像统计多波段图像信息

    在ENVI统计遥感多波段图像中每个波段的均值.方差.最大值.最小值是比较容易办到的,但是如果要处理多批的数据就没有那么方便了,这里转载一个MatLab读取ENVI图像(img+hdr)的程序,并且计算 ...

  4. java oracle 图片_JAVA读取Oracle中的blob图片字段并显示

    JAVA读取Oracle中的blob图片字段并显示 近期,在给客户做一个Demo页面时,需要用JAVA读取Oracle中的blob图片字段并显示,在此过程中,遇到一些问题,例如:连接Oracle数据库 ...

  5. 如何使用matlab读取excel中的表格数据

    如何使用matlab读取excel中的表格数据? 设备系统:win10. 操作软件:matlab2020b. 1.首先打开matlab软件,点击[新建]-[脚本]. 2.在脚本中输入代码 A=xlsr ...

  6. JAVA读取Oracle中的blob图片字段并显示

    转自:http://www.blogjava.net/zhangqingping/articles/JAVA.html 近期,在给客户做一个Demo页面时,需要用JAVA读取Oracle中的blob图 ...

  7. matlab数组保存envi,MATLAB 读取envi img格式

    function data=read_ENVIimagefile_img(imgfilename) %本函数读取img格式,前提是img图像显式带有'.img'后缀名. if length(imgfi ...

  8. gps电文解析matlab,MATLAB读取GPS的RINEX格式的导航电文

    文件用UltraEdith32打开如下: 2.11 NAVIGATION DATA G (GPS) RINEX VERSION / TYPE DAT2RINW 3.10 001 1 16APR08 9 ...

  9. 如何利用matlab读取文件夹下的图片

    在 Matlab 中读取文件夹下的图片,可以使用函数 dir 和 imread. 首先,使用 dir 函数获取文件夹下所有文件的信息,例如: folder = 'path/to/your/folder ...

最新文章

  1. NHibernate教程
  2. silver light
  3. Python 技术篇-用paramiko库实现linux服务器文件下载到winodws本地实例演示
  4. python打包zip文件_python 解压文件,合并文件 打包成zip格式文件 生成MD5值
  5. 和套套一样,一次性橡胶手套制作现场, 这鬼畜的画风
  6. C语言与Java的对比,你想好选谁了吗?
  7. android 音量调节 seekbar,Android 使用SeekBar调节系统音量
  8. mysql增加最大连接数_mysql最大连接数怎么设置
  9. 7安装sql cent os server_CentOS7 安装并使用SQL Server
  10. sqlsever 导入大数据sql文件
  11. python requests form data_Python requests模块 multipart/form-data类型文件上传
  12. 关于 IOS5 使用 position:fixed 与 scrollTo 共存的 bug
  13. 【Dairy】2016.10.30 BirthdayParty
  14. ROST情感分析的语法规则_基于「木兰」编译器,八行代码实现 quot;对于...中的quot;语法
  15. Db4o for .NET 使用心得(1、2):Trace db4o;慎用struct
  16. 区块链技术视频网站EthCast.com上线
  17. Linux软链接的创建,删除,修改
  18. JPG图像太大怎么免费压缩
  19. EMW3162 AT固件的使用【1】
  20. 为什么阿里巴巴规定禁止超过三张表 join

热门文章

  1. 华为应用市场2021年度安全隐私报告发布:护航应用安全是场“持久战”
  2. CAD三维图形转化成二维图形的过程具体的步骤
  3. python实现抢票github_抢票神器成GitHub热榜第一,支持候补抢票,Python跑起来
  4. 石头剪子布(字符串)c语言,石头、剪刀、布程序,C语言模拟
  5. 批量压缩图片大小 – Caesium简体中文
  6. 14.0高等数学五- 函数的幂级数展开(泰勒级数或者麦克劳林级数)
  7. 【无标题】 2022-2027年(新版)中国商业航天产业发展动态及投资战略研究报告
  8. Opcode 缓存介绍以及使用 Opcache
  9. Microsoft Web Farm Framework (WFF) 2.0正式发布
  10. python 删除pdf页面_使用Python批量删除扫描PDF中的空白页