IDL---ENVI

简介: ENVI;启动envi file=envi_pickfile();选择文件dialog,返回值就为file ENVI_OPEN_FIle,file,r_fid=fid;根据文件名打开file,并且返回fid envi_file_query,fid,NB=NB,NL=NL,NS=NS,dims=...
ENVI;启动envi
file=envi_pickfile();选择文件dialog,返回值就为file
ENVI_OPEN_FIle,file,r_fid=fid;根据文件名打开file,并且返回fid
envi_file_query,fid,NB=NB,NL=NL,NS=NS,dims=dims,data_type=dt,bnames=bnames;根据fid查询图像信息
data=envi_get_data(fid=fid,dims=dims,pos=0)根据fid得到数据dims:维度
window,1,xsize=798,ysize=909l;新建一个window窗体
tv,data;显示数据
tvscl,data;拉伸显示
tvscl,data,/order;idl中左下角为原点,envi中是左上角
envi,/restore_base_save_files ;不启动ENVI调用功能
envi_batch_init:批处理初始化
.e canny.pro;跳转到canny.pro文件

完整工程文件----定义一个button,并添加事件
PRO envi_canny_define_buttons,buttonInfo
;定义button
ENVI_DEFINE_MENU_BUTTON,buttonInfo,$
  value='Canny',$;显示的值
  uValue='',$;用户值
  EVENT_PRO='envi_canny',$;必须与主函数名一致
  pef_value='Filter',$;区分大小写
  position=1;位置
END
  
pro envi_canny,event          ;定义主函数
;
compile_opt idl2              ;编译环境
;选择数据
envi_select,fid=fid,/BAND_ONLY,pos=pos  ;选择遥感数据文件
;检查数据
print,fid,pos   ;打印
if fid eq -1 then return                ;判断是否得到数据
;查询数据
envi_file_query,fid,dims=dims,ns=ns,$
 nl=nl, nb=1, wl=wl
;获取数据
data=ENVI_GET_DATA(fid=fid,dims=dims,pos=pos)
;canny
result=canny(data)
;显示数据
;TVSCL,result   ;新建窗体并显示数据
output=envi_pickfile(/output)   ;设置并得到输出路径
  if(output eq "")then begin    ;判断得到的输出路径是否为空
    ENVI_ENTER_DATA,result
   endif else begin   
    ;保存数据
   openw,lun,output,/GET_LUN    ;新建二进制文件
   writeu,lun,result                     ;将结果写入    
   FREE_LUN,lun                          ;释放
   ;写头文件
   ENVI_SETUP_HEAD, fname=output,     $
    interleave=0,data_type=1, $
    NS=NS,NB=1,NL=NL,$
     /write, /open, r_fid = r_fid
     end
  
 envi_display_bands, r_fid, 0;显示该文件(只有一个波段)
 
END

;写完主程序之后要进行保存,$
;在控制台中
;save,filename="E:\Program Files\Exelis\ENVI51\classic\save_add\envi_canny.sav", /routines



解决方案:
在IDL的帮助中搜素resolve_all,通过语法
RESOLVE_ALL [, CLASS=string] [, /CONTINUE_ON_ERROR] [, /QUIET] [, RESOLVE_EITHER=string] [, RESOLVE_FUNCTION=string] [, RESOLVE_PROCEDURE=string] [, SKIP_ROUTINES=string] [, UNRESOLVED=variable]
在控制台中输入resolve_all,/CONTINUE_ON_ERROR,SKIP_ROUTINES="envi"回车,在save
save,filename="E:\Program Files\Exelis\ENVI51\classic\save_add\envi_canny.sav", /routines
目录
相关文章
|
3月前
MFC编程 -- 实现拖拽文件获取路径
MFC编程 -- 实现拖拽文件获取路径
33 0
|
计算机视觉 C#
知乎上有一个问题“在mfc框架中,有上面方法能直接将opencv2.0库中的Mat格式图片传递到Picture Control”中显示?
一直以来,我使用的方法都是shiqiyu在opencvchina上面提供的引入directshow,并且采用cvvimage和cameraDs的方法。这个方法虽然在xp/win7/win8下面都能够成果使用,但是一直以来我都没有动机去深入看一看这个方法。
1218 0
|
10月前
|
存储 C语言 索引
ENVI IDL:熟悉IDL语法+输出多幅TIFF影像的MAX文件和MEAN文件
ENVI IDL:熟悉IDL语法+输出多幅TIFF影像的MAX文件和MEAN文件
209 0
|
10月前
|
索引
ENVI_IDL:如何读取HDF4数据?
ENVI_IDL:如何读取HDF4数据?
156 0
|
10月前
ENVI_IDL:如何读取HDF4文件和HDF5文件的数据集和属性?
参考Documentation Center (l3harrisgeospatial.com) 由于时间和精力,这里并没有对其中的函数进行详细的说明,只是介绍了函数作用以及用法。
123 0
|
10月前
|
存储 编解码 Python
ENVI_IDL:对于书写和创建GEOTIFF结构体?
ENVI_IDL:对于书写和创建GEOTIFF结构体?
75 0
|
10月前
|
传感器
ENVI:如何自定义RPC文件?
ENVI:如何自定义RPC文件?
123 0
|
10月前
|
索引
ENVI_IDL: 如何读取HDF5文件再优美地做个均值处理?(以OMI数据为例)
ENVI_IDL: 如何读取HDF5文件再优美地做个均值处理?(以OMI数据为例)
180 0
|
10月前
|
存储 编解码
ENVI_IDL:读取OMI数据(HDF5)并输出为Geotiff文件+详细解析
ENVI_IDL:读取OMI数据(HDF5)并输出为Geotiff文件+详细解析
283 1
|
10月前
|
存储
ENVI_IDL: 创建HDF5文件并写入数据(以将Geotiff文件写入HDF文件为例) + 详细解析
ENVI_IDL: 创建HDF5文件并写入数据(以将Geotiff文件写入HDF文件为例) + 详细解析
117 0