作为Halcon学习者,在使用HDevelop编程时,最基础的操作就是先将测试图像读取导入。核心函数算子是read_image(),下面我们来分别演示如何使用它读取单张图片、多张有序图片和多张无序图片。
一、读取单张图片
① 代码读取
* (1)-Halcon读取图像--读取单张图片
read_image(Image, './imgs/1.bmp')
② 助手读取--》选择文件--》插入代码:
* Image Acquisition 01: Code generated by Image Acquisition 01
read_image (Image, 'E:/Practice/Halcon/Halcon_Study/Function_Study/imgs/1.bmp')
二、批量读取图片--有序(命名有序图片)
① 图片命名规则:'./imgs/1.bmp', './imgs/2.bmp', './imgs/3.bmp'
* i取值为1,2,3,图片路径为'./imgs/1.bmp', './imgs/2.bmp', './imgs/3.bmp'for i:=1 to 3 by 1'./imgs/' + i + '.bmp')endfor
② 图片命名规则:'./imgs/left01.bmp', './imgs/left02.bmp', './imgs/left03.bmp'
* i取值为1,2,3,图片路径为'./imgs/left01.bmp', './imgs/left02.bmp', './imgs/left03.bmp'for j := 1 to 3 by 1'./imgs/' + 'left' + j$'02')
endfor
三、批量读取图片--无序(命名无序图片)
① 代码读取
* (3)-Halcon读取图像--批量读取(命名无序图片)* 列出imgs文件夹下所有文件路径list_files ('./imgs', 'files', ImageFiles)* 选择符合条件的文件(jpg/png/bmp)tuple_regexp_select (ImageFiles, '.*jpg|png|bmp', Selection)* 循环读取文件夹中的图像for i:=0 to |Selection| - 1 by 1 read_image (Image_Test, Selection[i])endfor
② 助手读取--》选择路径--》插入代码:
* Image Acquisition 01: Code generated by Image Acquisition 01list_files ('E:/Practice/Halcon/Halcon_Study/Function_Study/imgs', ['files','follow_links'], ImageFiles)tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)for Index := 0 to |ImageFiles| - 1 by 1 read_image (Image, ImageFiles[Index])01: Do somethingendfor
四、读取例程图片
Halcon例程图片路径:C:\Users\Public\Documents\MVTec\HALCON-20.11-Steady\examples\images
Halcon安装时已经上面的目录加入到环境变量了,所以我们可以直接用这些图片。
例如:read_image (Image, 'printer_chip/printer_chip_01')
读取到的图片就是下面目录下的第一张图