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', [], [])