【HALCON常用的一些操作】

HALCON文件夹遍历和文件筛选

* 遍历文件夹  
list_image_files ('C:/Users/Public/Documents/MVTec/HALCON-17.12-Progress/examples/images', 'default', 'recursive', ImageFiles) 
* 筛选bmp及jmp格式的图片  
tuple_regexp_select(ImageFiles, ['\\.(bmp|jpg|tif)$','ignore_case'], ImageFiles)  
* 打开窗口    
dev_open_window (0, 0, 512, 512, 'black', WindowHandle1)  
* 依次读取所选图片并显示 在窗口中  
for Index := 0 to |ImageFiles| - 1 by 1  
    read_image (Image, ImageFiles[Index])  
    dev_display(Image)  
    * 分割文件名  
    parse_filename(ImageFiles[Index], BaseName, Extension, Directory)  
    * 保存图片,给出路径及名称,新文件名为在原文件名后添加_adj  
    dev_disp_text (BaseName, 'window', 'top', 'left', 'black', [], [])
    dev_disp_text (Extension, 'window', 'top', 'right', 'black', [], [])
    dev_disp_text (Directory , 'window', 'bottom', 'left', 'black', [], [])
    *dump_window(WindowHandle,'bmp',Directory + BaseName + '_adj')  
    stop ()  
endfor  

注意使用绝对路径时Windows是右斜杠“\\”而halcon里是用的是左斜杠“//”

格式转换

*用Halcon批量修改图片格式,例如将bmp改为png(删除原图)
*原始格式
SourceFormat:='tiff'
*转换后格式
DestFormat:='png'
*是否删除原图
IsDeltaImage:=0

*可以同时选择多个文件
dev_open_file_dialog ('read_image', 'read_multi', 'default', SelectFiles)
*'ignore_case':忽略大小写
tuple_regexp_select (SelectFiles, ['\\.'+SourceFormat,'ignore_case'], ImageFiles)
hadTransform := 0
for Index :=0 to |ImageFiles| - 1 by 1
    read_image (Image, ImageFiles[Index])
    if (hadTransform = 1)
        delete_file (ImageFiles[Index -1])
    endiif
    parse_filename (ImageFiles[Index], BaseName, Extension, Directory)
    Substring:=Directory+BaseName
    write_image (Image, DestFormat, 0, Substring)
    hadTransform := IsDeltaImage
endfor
if (hadTransform = 1)
    delete_file (ImageFiles[Index -1])
endif

*若此处报错说明没有进行转换
dev_disp_text (Substring, 'window', 'center', 'left', 'black', [], [])

你可能感兴趣的:(视觉检测)