read_image(Image,'C:/test.png')
*列出指定路径下的文件
list_files('C:/Picture',['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])
endfor
上述代码中提到了三种算子,分别是list_files、tuple_regexp_select、read_image,下面主要针对前两个算子进行理解。
list_files( : : Directory, Options : Files)
第一个参数:(Directory)
为所要读取的图片集的文件夹路径;
第二个参数:(Options)
为处理选项,即要怎么获取,Halcon提供了6种参数:默认值 ‘files’, ‘directories’, ‘recursive’, ‘follow_links’, ‘max_depth 5’, ‘max_files 1000’。
‘files’——选择路径下的文件
‘directories’——选择路径下的文件夹
tuple_regexp_select( : : Data, Expression : Selection)
第一个参数为待选择的文件,在这里其实就是list_files()的输出;
第二个参数为指定的规则;
第三个参数为符合规则的输出;
在Halcon中也可以使用图像采集助手来读取图像文件。选择菜单栏中的“助手”->“打开新的Image Acquisition”选项,将出现Halcon图像采集助手的窗口,通过“选择文件”或者“选择路径”来采集单张或多张图片。单击该窗口菜单栏中的插入代码即可将代码显示在程序编辑器中。
读取视频文件的方式同读取图像文件的方式类似,还以Halcon图像采集助手为例。打开Halcon图像采集助手,在“资源”选项卡中的“图像获取接口”选项区域选择“DirectFile”选项,这是读取视频的接口。
(注意:选择DirectFile选项时,文件路径应当是英文)
然后连接视频文件,选择“连接”选项卡,在其中设置读取视频的参数,在“媒体文件”中选择视频文件所在的路径,这样既可实现视频的输入。
实现代码参考如下:
*开启图像采集接口
open_framegrabber('DirectFile',1,1,0,0,0,0,'default',-1,'default',-1,'false','test.avi','default',1,-1,AcqHandle)
*开始异步采集
grab_image_start(AcqHandle,-1)
while(ture)
*获取采集的图像
grab_image_async(Image,AcqHandle,-1)
Endwhile
*关闭采集接口
close_framegrabber(AcqHandle)
Halcon支持的视频格式并不多,文件中可选的只有’.avi’格式的视频,而且并非所有的“.avi”格式的文件都能读取。有时可能会初夏读取不了的情况,这与视频本身的编解码有关。因此还是建议使用图像或图像序列的方式来代替非实时视频输入。