
计算机无意间创建了该版,只是对其进行了修改并完善了以供共享.

PRO kill_canny_app,事件
shmunmap,“ rose_shmmap”
END
PRO CannyApp_eventcanny边缘检测处理算法比较,事件
居中= 0
的情况下的widget_info(event.id,/ uname)
“ HIGHv”: 转到,FilterIt
“ LOWv”: 转到FilterIt
“ SIGMAv”: 转到FilterIt
“ BtnQuit”: 转到,ExitFilterApp
尾部
FilterIt:
sliderH_ID = widget_info(event.top,find_by_uname =“ HIGHv”)
widget_control,sliderH_ID,get_value = HighValue; <-百分比
sliderL_ID = widget_info(event.top,find_by_uname =“ LOWv”)
widget_control,sliderL_ID,get_value = LowValue; <-百分比
sliderS_ID = widget_info(event.top,find_by_uname =“ SIGMAv”)
widget_control,sliderS_ID,get_value = SigmaValue; <-百分比
HighValue = HighValue * 0.01
低值=低值* 0.01
SigmaValue = SigmaValue * 0.01
wDraw2_ID = widget_info(event.top,find_by_uname =“ RoseEdges”)

widget_control,wDraw2_ID,get_value = ID_grWindow2
rose_image = shmvar('rose_shmmap')
; _____绘制图像的边缘: _____
wset,ID_grWindow2
rose_xsize =(大小(rose_image,/尺寸))[1]
rose_ysize =(大小(rose_image,/尺寸))[2]
red_rose =改革(rose_image [0,*,*],rose_xsize,rose_ysize)
green_rose =改革(rose_image [0,*,*],rose_xsize,rose_ysize)
blue_rose =改革(rose_image [0,*,*],rose_xsize,rose_ysize)
red_edge = CANNY(红色玫瑰,HIGH =高值,LOW =低值,SIGMA = SigmaValue)
green_edge =佳能(green_rose,HIGH =高值,LOW =低值,SIGMA = SigmaValue)
blue_edge = CANNY(blue_rose,HIGH =高值,LOW =低值,SIGMA = SigmaValue)
RGB_edge = bindgen(3,227,149)
RGB_edge [0,*,*] = red_edge * 255
RGB_edge [1,*,*] = green_edge * 255
RGB_edge [2,*,*] = blue_edge * 255
电视,RGB_edge [0,*,*],频道= 1
TV,RGB_edge [1,*,*],CHANNEL = 2
TV,RGB_edge [2,*,*],CHANNEL = 3
转到,全部完成
ExitFilterApp:
shmunmap,“ rose_shmmap”
widget_control,event.top,/ destroy
返回

AllDone:
END
PRO CannyApp
COMPILE_OPT IDL2
; _____创建未过滤的图像: _____
rose_path =“ C: 程序文件ITTIDLIDL80examplesdatarose.jpg”
如果file_test(rose_path)为1,则开始
tmp = dialog_message(“文件不存在” +字符串(13b)+ $
rose_path,/错误)
返回
endif
rose_image = read_image(rose_path)
; ______________________________________
; _____设置共享内存(因此事件处理程序可以具有映像): _____
shmmap,'rose_shmmap',/ BYTE,大小(rose_image,/尺寸)
shm_var = shmvar('rose_shmmap')
shm_var [*] = rose_image
; _________________________________________________________________
; _____创建边缘检测图像: _____
rose_xsize =(大小(rose_image,/尺寸))[1]
rose_ysize =(大小(rose_image,/尺寸))[2]
red_rose =改革(rose_image [0,*,*],rose_xsize,rose_ysize)
green_rose =改革(rose_image [0,*,*],rose_xsize,rose_ysize)
blue_rose =改革(rose_image [0,*,*],rose_xsize,rose_ysize)

red_edge =锦缎(red_rose)
green_edge =锦缎(green_rose)
blue_edge =锦缎(blue_rose)
RGB_edge = bindgen(3,227,149)
RGB_edge [0,*,*] = red_edge * 255
RGB_edge [1,*,*] = green_edge * 255
RGB_edge [2,*,*] = blue_edge * 255
; ____________________________________
; _____构建小部件: _____
wTLB = WIDGET_BASE(/ ROW)
wControls = widget_base(wTLB,/列)
wLeft = WIDGET_BASE(wTLB,/第COLUMN个)
wRight = WIDGET_BASE(wTLB,/第COLUMN个)
wBase1 = WIDGET_BASE(wLeft,/第COLUMN个)
wBase2 = WIDGET_BASE(右,/列)
wText1a = WIDGET_LABEL(wBase1,VALUE =“原始玫瑰”)
wDraw1 = WIDGET_DRAW(wBase1,XSIZE = rose_xsize,YSIZE = rose_ysize)
wText2 = WIDGET_LABEL(wBase2,VALUE =“玫瑰的边缘”)
wDraw2 = WIDGET_DRAW(wBase2,XSIZE = rose_xsizecanny边缘检测处理算法比较,YSIZE = rose_ysize,uname =“ RoseEdges”)
; _____控制器: _____
wSliderH = widget_slider(wBase1,标题=“高值(最大像素值的百分比): ”,最大值= 100,$
最小值= 0,值= 80,uname =“ HIGHv”)
wSliderL = widget_slider(wBase1,标题=“低价值(高价值的百分比): ”,最大值= 100,$
最小值= 0,值= 40,uname =“ LOWv”)

wSliderS = widget_slider(wBase1,标题=“ Sigma%”,最大值= 100,$
最小值= 0,值= 60,uname =“ SIGMAv”)
wButtonQuit = widget_button(wBase1,值=“ Quit Edge App”,uname =“ BtnQuit”)
; ____________________________
WIDGET_CONTROL,wTLB,/实现
; ____________________绘制图像: ____________________
widget_control,wDraw1,GET_VALUE = window1ID
widget_control,wDraw2,GET_VALUE = window2ID
; _____绘制原始图像: _____
wset,window1ID
reconstructed_rose = bindgen(227,149,3)
reconstructed_rose [*,*,0] =红色玫瑰
reconstructed_rose [*,*,1] =绿色玫瑰
reconstructed_rose [*,*,2] = blue_rose
电视,rose_image [0,*,*],频道= 1
电视,rose_image [1,*,*],频道= 2
电视,rose_image [2,*,*],频道= 3
; _____绘制图像的边缘: _____
wset,window2ID
电视,RGB_edge [0,*,*],频道= 1
TV,RGB_edge [1,*,*],CHANNEL = 2
TV,RGB_edge [2,*,*],CHANNEL = 3
; ________________________________________________________
XMANAGER,“ CannyApp”,wTLB,清理=“ kill_canny_app”
END
; ---
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-147905-1.html
雷达