读取图像算子
1读取单张图片时候,使用read_image直接读取
2读取多张图片的时候:
a,当读取某一目录下所有文件的时候,可以使用助手,选择路径读取,然后插入代码
实例如下:
* Code generated by Image Acquisition 01
*遍历指定文件夹下所有文件,输出我们指定规则下的文件
list_files ('E:/Program Files/MVTec/HALCON-10.0/images/board', ['files','follow_links'], ImageFiles)
*选择符合规则的索引 \\.表示转译字符为. 'ignore_case'忽略大小写
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima)$','ignore_case'], ImageFiles)
for Index := 0 to |ImageFiles| - 1 by 1
read_image (Image, ImageFiles[Index])
* Do something
endfor
注解list_files( : : Directory, Options : Files)
Directory :指定文件夹
Options :'flile'指定搜索的格式为文件 读取指定文件夹下的文件
'direction'指定搜索的格式为文件夹 读取指定文件夹下的文件夹
'recursive’ 指定遍历子文件夹下的文件 读取指定文件夹下的文件夹中的文件
'max_depth ' 指定遍历的深度, 读取指定文件夹下的文件的深度,当为2的时候,都两层文件夹,第三层读不出来
'max_files'设置指定文件夹下的读取文件的最大文件数目
tuple_regexp_select
\\.(bmp|jpg|tif) ----就相当于 .bmp|.jpg|.tif
'ignore_case' 忽略大小写
使用图像助手连接摄像头获取图像:
选择图像获取借口,点击检测自动选择
* Code generated by Image Acquisition 02
open_framegrabber ('DirectShow', 1, 1, 0, 0, 0, 0, 'default', 8, 'rgb', -1, 'false', 'default', 'USB \xCA\xD3Ƶ\xC9豸', 0, -1, AcqHandle)
grab_image_start (AcqHandle, -1)
while (true)
grab_image_async (Image, AcqHandle, -1)
* Do something
endwhile
close_framegrabber (AcqHandle)
使用索引列表获取图像
打开图像助手,
open_framegrabber ('File', 1, 1, 0, 0, 0, 0, 'default', -1, 'default', -1, 'false', 'fabrik', 'default', 1, -1, AcqHandle)
grab_image_start (AcqHandle, -1)
while (true)
grab_image_async (Image, AcqHandle, -1)
* Do something
endwhile
close_framegrabber (AcqHandle)
这样是不能够索引的,需要在要索引的文件夹中新建一个seq文件,用写字板打开,写入各个文件的路径,每一行写一个
修改上式open_framegrabber中设备名称'fabrik'为要搜索的文件夹的路径下的一个索引文件'E:/Program Files/MVTec/HALCON-10.0/images/board/in.seq'