hdrfilename='a.hdr';
imgfilename='a.img';
%读取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-1
        samples=[samples,info(i)];
    end
    samples=str2num(samples);
%查找行数
    a=strfind(info,'lines = ');
    b=length('lines = ');
    c=strfind(info,'bands');
    lines=[];
    for i=a+b:c-1
        lines=[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-1
        bands=[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-1
        datatype=[datatype,info(i)];
    end
    datatype=str2num(datatype);
    precision=[];
    switch datatype
        case 1
            precision='uint8=>uint8';%头文件中datatype=1对应ENVI中数据类型为Byte,对应MATLAB中数据类型为uint8
        case 2
            precision='int16=>int16';%头文件中datatype=2对应ENVI中数据类型为Integer,对应MATLAB中数据类型为int16
        case 12
            precision='uint16=>uint16';%头文件中datatype=12对应ENVI中数据类型为Unsighed Int,对应MATLAB中数据类型为uint16
        case 3
            precision='int32=>int32';%头文件中datatype=3对应ENVI中数据类型为Long Integer,对应MATLAB中数据类型为int32
        case 13
            precision='uint32=>uint32';%头文件中datatype=13对应ENVI中数据类型为Unsighed Long,对应MATLAB中数据类型为uint32
        case 4
            precision='float32=>float32';%头文件中datatype=4对应ENVI中数据类型为Floating Point,对应MATLAB中数据类型为float32
        case 5
            precision='double=>double';%头文件中datatype=5对应ENVI中数据类型为Double Precision,对应MATLAB中数据类型为double
        otherwise
            pp='invalid datatype';%除以上几种常见数据类型之外的数据类型视为无效的数据类型
        end
%查找数据格式
    a=strfind(info,'interleave = ');
    b=length('interleave = ');
    c=strfind(info,'sensor type');
    interleave=[];
    for i=a+b:c-1
        interleave=[interleave,info(i)];
    end
    interleave=strtrim(interleave);%删除字符串中的空格
%读取图像文件
    fid = fopen(imgfilename, 'r');
 
    data = multibandread(imgfilename ,[lines, samples, bands],precision,0,interleave,'ieee-le');
    data= double(data);

datar=data(:,:,1);
   datag=data(:,:,2);
   datab=data(:,:,3);
  % subplot(2,2,1),imagesc(datar),colormap(gray);
   %subplot(2,2,2),imagesc(datag),colormap(gray);
   %subplot(2,2,3),imagesc(datab),colormap(gray);

刚开始用这个程序可能会遇到一些问题,比如提示什么str2num的问题,最好打开hdr文件看一下是,有可能多一个空格或者少一个空格就会引起报错。

matlab读取img格式文件相关推荐

  1. matlab读取.mat格式文件

    matlab读取.mat格式文件 13.1 数据基本操作 本节介绍基本的数据操作,包括工作区的保存.导入和文件打开. 13.1.1 文件的存储 MATLAB支持工作区的保存.用户可以将工作区或工作区中 ...

  2. Matlab之netCDF格式文件读取方法

    Matlab之netCDF格式文件读取方法 目录 一.netCDF格式文件 1.简介 2.NetCDF的数据结构 二.Matlab读取netCDF使用到的函数 1.ncdisp() 2.ncinfo( ...

  3. MATLAB读取HDF格式的SST数据

    利用MATLAB读取HDF格式的SST数据是比较简单的,MATLAB中有专门用于读取HDF的函数hdfread()与hdfinfo()就能很好的读取HDF文件.我们可以在读取文件的时候,通过显示文件中 ...

  4. python用os.system打开wav文件_使用python读取wav格式文件

    ** 使用python读取wav格式文件 ** - 基本概念 [采样频率] 即取样频率, 指每秒钟取得声音样本的次数.采样频率越高,声音的质量也就越好,声音的还原也就越真实,但同时它占的资源比较多.由 ...

  5. python xlrd读取excel-使用Python xlrd模块读取Excel格式文件的方法

    这是一篇关于如何使用Python xlrd模块读取Excel格式文件的方法的文章,下面的python代码中使用 了xlrd模块的方法,这样就能够很方便的读取 excel 文件内容.同是这个xlrd模块 ...

  6. python获取的html转换为json,python读取XML格式文件并转为json格式

    XML文件如下: 红楼梦书名> 曹雪芹作者> 描述贾宝玉和林黛玉的爱情故事主要内容> 人民文学出版社出版社> 图书> 一.python读取XML格式文件代码: impor ...

  7. nodejs json转对象_nodejs读取xlsx格式文件

    # nodejs读取xlsx格式文件 安装 npm i node-xlsx -D // 或者 yarn add node-xlsx -D 使用 读取表格数据,并生成json对象 /*** @auth ...

  8. Matlab读取二进制数据文件

    第一步:函数fopen打开文件 fid=fopen('文件名',读取方式) fid:句柄值 小于0表示打开失败:大于0表示打开成功 文件名:字符串,使用单引号(本文例子'savedata.dat') ...

  9. VTK重建CT图像,写入和读取STL格式文件

    VTK重建CT图像(代码亲测无误) 1.读取数据 2.提取等值面 3.显示结果 一是要有输入源(jpegreader读入的数据) 二是要有相机(camera) 三是要有展示的窗口(window) #i ...

最新文章

  1. iOS 十六进制的颜色值转换为UIColor
  2. 湖南科技大学c语言程序设计b,2017年湖南科技大学计算机科学与工程学院826C语言程序设计与数据结构综合之数据结构考研题库...
  3. 导航菜单设计五步法——B端设计指南
  4. android 设置窗口透明效果,android - 如何将对话框窗口背景设置为透明,而不影响其边距...
  5. BZOJ 3277 串 BZOJ 3473 字符串 (广义后缀自动机、时间复杂度分析)
  6. 【6.2】hibernate_component
  7. jquery添加div实现消息聊天框
  8. UTF8,Unicode 的区别(zt)
  9. 威纶触摸屏键盘不显示数字_详解 | 威纶触摸屏数值输入元件应用
  10. Google地图开发总结
  11. 【51单片机】通过定时器中断 在8位数码管显示时间
  12. matlab计算股票的预期收益率,如何计算股票预期收益率
  13. Excel VBA 操作 Word(入门篇)
  14. STM32-实现us延时
  15. deactive(Deactive breakpoint)
  16. linux操作系统课程设计总结,操作系统课程设计心得+给老师的建议
  17. 李宏毅2021机器学习笔记——Regression
  18. PL\SQL破解版 ,带注册码,免费,不要积分,亲测
  19. SpringMVC基础--spring MVC配置详解
  20. el-table 排序

热门文章

  1. 华为应用市场名称问题
  2. cad面积计算机,用cad计算多个面积的方法步骤
  3. linux git rabit,Linux 安装 RabbitMQ
  4. NGFW module恢复密码操作方法
  5. Tracup体验报告
  6. 一致性哈希算法 mysql_一致性哈希算法 CARP 原理解析, 附 Golang 实现
  7. 计算机应用课程思政的应用,计算机类课程思政改革——以“Office高级应用”课程为例...
  8. Linux:更新 /usr/share/glib-2.0/schemas 目录
  9. 对Spring IOC的理解
  10. SSM网上校园订餐系统-javaweb, mysql