·方法1:
| File / Images 读取不同文件格式的图像。 read_image( : Image : FileName : ) Image:输出参数,读取后的图像放入此名称的变量或元组中。 FileName:输入参数,要读取的映像的名称。 |
操作符read_image从后台存储中读取指定的图像文件并生成图像。可以在FileName中传递一个或多个文件名。如果传递了多个文件名,则返回一个图像对象元组,其中包含相应数量的图像对象。
除了HALCON格式,TIFF, GIF, BMP, JPEG, JPEG-2000, JPEG- xr, PNG, PCX, SUN-Raster, PGM, PPM, PBM,和XWD文件也可以读取。PBM图像的灰度值设置为0和255。文件格式要么由扩展名识别(如果指定的话),要么由文件的内部结构识别。如果扩展指示的图像可以更快地找到。如果没有指定扩展名,则优先选择有扩展名的文件,而不是没有扩展名的文件。对于PGM、PPM和PBM,可以使用相应的扩展名(例如' PGM ')或通用值'pnm'。在TIFF格式下,可接受' TIFF '和'tif'。在JPEG-XR的情况下,'jxr', 'wdp', 'wmp'和'hdp'是可以接受的。对于JPEG-2000,只接受“jp2”。对于彩色图像,创建具有三个颜色通道的图像,红色通道存储在第一,绿色通道存储在第二,蓝色通道存储在第三分量(通道号)。
对于TIFF、PNG、JPEG-XR和JPEG-2000图像格式,二进制alpha通道被解释为域。对于TIFF文件,另外带有PhotometricInterpretation = TransparencyMask的二进制subifd被解释为域。否则,生成的图像对象的域(=矩阵中的所有像素)被选择为最大的。
对于TIFF图像,多页TIFF文件以图像对象元组的形式返回。只有当TIFF文件中的subifd的尺寸等于主图像的尺寸时,才读取它们。
- *针对Halcon默认目录直接读取
- *读取一张图片:
- read_image(Image,'mreut')
-
- *读取3个图像到一个图像数组:
- read_image(Images,['ic0','ic1','ic2'])
-
- *设置图像的搜索路径为 '/mnt/images' and '/home/images':
- set_system('image_dir','/mnt/images:/home/images')
-
- *针对非Halcon默认目录的读取
- read_image(Image1,'d:/Documents/Desktop/001.png')
方法2:
方法3:菜单栏—文件—读取图像


方法4:菜单栏—助手—打开新的Image Acquisition



- ImageFiles := []
- ImageFiles[0] := 'd:/Documents/Desktop/001.png'
- ImageFiles[1] := 'd:/Documents/Desktop/002.png'
- ImageFiles[2] := 'd:/Documents/Desktop/003.png'
- for Index := 0 to |ImageFiles| - 1 by 1
- read_image (Image, ImageFiles[Index])
- endfor
方法1:
- for i:=0 to 9 by 1
- read_image(Image,'D:/Documents/Desktop/' + i + '.bmp')
- endfor
- *只是这里的9需要自己提前确定数量
方法2:
- Num :=2
- for i :=1 to Num by 1
- read_image (Image, 'autobahn/scene_'+(i$'02'))
- read_image (Image, 'D:/Documents/Desktop/' + i$'03')
- endfor
方法3:



- list_files ('d:/Documents/Desktop', ['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
这样可以对一个目录下的图像进行读取,也可以对图像的格式进行修改。
方法4:
- *目录最后一定要有/
- path:='d:/Documents/Desktop/'
- ImagePath:=[]
- ImagePath[0]:='001.png'
- ImagePath[1]:='002.png'
- ImagePath[2]:='003.png'
-
- for i:=0 to 2 by 1
- read_image(Image1,path + ImagePath[i])
- endfor
| File / Misc 列出一个目录中的所有文件。 list_files( : : Directory, Options : Files) Directory:输入参数,要列出的目录名称。 Options:输入参数,处理选项。默认 'files',建议值【 'files', 'directories', 'recursive', 'follow_links', 'max_depth 5', 'max_files 1000'】。 Files:输出参数,找到的文件(和目录)。 |
list_files返回参数文件中directory给出的目录中的所有文件。当前目录可以用"或:'参数选项可以通过传递元组值来指定不同的处理选项。如果选项包含'files',则只返回Directory中存在的文件。如果传入'directories',则只返回Directory中存在的目录。目录以1'结尾(Windows)或7结尾(类unix系统)。如果需要同时返回文件和目录,则必须传入['files','directories]。如果'files'和'directories'都没有传递,list_files返回一个空元组。通过传递'递归',可以指定通过检查所有子目录递归搜索目录树。在类unix系上,'follow_links'可以用来指定到文件或目录的符号链接应该被跟随。在默认设置中,不解除符号链接的引用,因此,如果符号链接指向目录,则不进行搜索,如果指向文件,则不返回符号链接。对于递归搜索,可以使用'max_depth
- get_system ('operating_system', OS)
- if (OS{0:2} == 'Win')
- SEP := '\\'
- else
- SEP := '/'
- endif
- get_system ('example_dir', HalconExamples)
- ExampleDir := HalconExamples + SEP + 'hdevelop'
- list_files (ExampleDir, ['files','recursive'], ExampleFiles)
| Tuple / String Operations 选择匹配正则表达式的元组元素。 tuple_regexp_select( : : Data, Expression : Selection) Data:输入参数,输入要匹配的字符串。 Expression:输入参数,正则表达式。默认 '.*',列表【 '.*', 'invert_match', 'ignore_case', 'multiline', 'dot_matches_all', 'newline_lf', 'newline_crlf', 'newline_cr'】。 Selection:输出参数,匹配字符串 |
tuple_regexp_select将expression中的正则表达式应用于Data中的一个或多个输入字符串,并返回Selection中的匹配字符串元素。这很方便,例如,用于过滤使用操作符list_files获得的文件列表。请参阅tuple_regexp_match的文档了解正则表达式的语法和选项。此外,tuple_regexp_select支持'invert_match'选项,它会导致那些不匹配正则表达式的输入字符串被选中。有关字符串操作的一般信息,请参见元组/字符串操作。如果输入元组为空,操作符返回一个空元组。
HDevelop在线操作HDevelop为tuple_regexp_select提供了一个内联操作,可以在表达式中使用,语法如下:
Selection := regexp_select(Data, Expression)