Halcon 基础应用(1) 电脑版发表于:2024/4/28 9:20 ![](https://img.tnblog.net/arcimg/hb/0cebbc624ef24f6582d16debf7db6b30.png) >#Halcon 基础应用(1) [TOC] Halcon中的数组 ------------ ### 创建数组 ```bash ** 元组/数组 ** 创建一个数组 A := [] A[0] := 1 A[1] := 2 ``` ### 创建字典 ```bash ** 创建一个字典 dic:=dict{Name:'收拾'} ``` ![](https://img.tnblog.net/arcimg/hb/b8516864996140899354fb8d756f530e.png) ```bash ** 元组 B := [1,[1,2,3]] R := B * 2 ``` ![](https://img.tnblog.net/arcimg/hb/26f74a38314a4fa18181f7a3366eabc2.png) ### 相加 tn2>数组相加前提是:两个数组要一致 ```bash C:=[1,2,3] B:=[11,22,33] D:=B+C ** 求数组的长度 len := |D| ** 求元素的个数 tuple_length (D,len1) ** 通过下标获取元素值,下标是从0开始 value := D[2] ``` ![](https://img.tnblog.net/arcimg/hb/bbf1cd73eab44c13a2bcd74376f375d0.png) ### 批量赋值 ```bash A:=[10,20,30,40,50] A[6]:=100 *赋值 [100, 20, 30, 40, 50, 0, 100] A[0,2,3]:=99 *批量赋值 [99, 20, 99, 99, 50, 0, 100] *下标是要赋值的位置序号 B:=[10:15] *[10, 11, 12, 13, 14, 15] *B的值为10到15的连续值 B1:=[10:2:20] *[10, 12, 14, 16, 18, 20] *B1的值为10到20的连续值,步长为2,步长可以为负数 ``` ![](https://img.tnblog.net/arcimg/hb/43e7ae40806f4388a4d74241e9b0cdbd.png) ### 元组操作 ```bash A:=[10,30,20,40,50] B:=[1,30,20,4,5] tuple_union(A,B,C) *C的值为 [1, 4, 5, 10, 20, 30, 40, 50] *两个数组进行合并操作,并自动排序【对两个数组进行并集操作】 *注意:合并时重复的元素只出现一次 tuple_intersection(A,B,D) *D的值为 [20, 30] *对两个数组进行交集操作,并自动排序 tuple_replace (A, [0,2], ['100','200'], E) *E的值为 ['100', 30, '200', 40, 50] *替换操作 *参数2:要替换的位置序号 *参数3:要替换的值 *参数4:替换后保存的数组变量 tuple_insert (A, 3, '500', F) *F的值为 [10, 30, 20, '500', 40, 50] *插入元素 *参数2:插入的位置序号 *参数3:插入的值 *参数4:插入后保存的数组变量 ``` ![](https://img.tnblog.net/arcimg/hb/f8a203e0b029455993216b162e46bb55.png) ```bash **数组的初始化 A := [1,2,3,4] **定义空数组,逐渐追加元素 A :=[ ] for i :=0 to 4 by 1 A:= [A,i] endfor **连接两个tuple数组到第三个tuple中 tuple1[0] := 1 tuple2[0] := 3 tuple_concat(tuple1,tuple2, Concat) **返回一个随机数tuple数组,数值分布在[0,1)之间 tuple_rand(5,tmp) **生成一个指定长度和初始化值的数组 tuple_gen_const(5, 100, Result ) **初始化数组,指定开始值,终止值,步长,得到sequence tuple_gen_sequence (1, 20, 2, Sequence) ``` ![](https://img.tnblog.net/arcimg/hb/966efe9e93b34a0baa5275863978729d.png) ![](https://img.tnblog.net/arcimg/hb/5a4e1631937642c18401c907402680f4.jpg) ```bash i1:=123$'#o' *$'#o' 十进制转换成8进制数据 *'0173' 0为前缀 i2:=123$'#x' *$'#x' 十进制转换成16进制数据 *'0x7b' 0x为前缀 字母小写 i3:=123$'#X' *$'#X' 十进制转换成16进制数据 *'0X7B' 0X为前缀 字母大写 i4:=123$'#f' * double型,默认保留小数点后六位 * '123.000000' i5:=123$'#g' *'123.000' 使数字始终保持六位,不足补零 i6:=12345678$'#g' * '1.23457e+007' i7:=123$'#G' *'123.000' 使数字始终保持六位,不足补零 i8:=12345678$'#G' * '1.23457E+007' i9:=5432178$'#e' *$'#e' 转换成科学计数 '5.432178e+006' i10:=5432178$'#E' *$'#E' 转换成科学计数 '5.432178E+006' i11:=2.7$'6' *$'6' 小于六位时,文本右对齐,大于不影响 * ' 2.7' i12:=2.7$'-6' *$'-6' 小于六位时,文本左对齐,大于不影响 * '2.7 ' i13:=2$'.6' *小于六位时,在左补零,大于不影响 * '000002' *注意:针对整数,小数无效 i14:=2.8$'.6' *'2.8' 小数无效 i15:=267$'10.6' *小于十位时,文本右对齐;小于6位则在左补零,大于不影响 *' 000267' i16:=26.7$'10.6' *注意:补零功能针对整数,小数无效 *' 26.7' ``` ![](https://img.tnblog.net/arcimg/hb/27f51828fb2a4330b1bc406132914d00.png) Halcon文件操作 ------------ ```bash dev_get_window (WindowHandle) * 遍历文件夹 list_files ('C:/Users/Gerry/Desktop/halcon deeplearn/Train_images', ['files', 'recursive'], Files) list_image_files ('C:/Users/Gerry/Desktop/halcon deeplearn/Train_images/梨', 'default', [], ImageFiles) * 筛选bmp及jmp格式的图片 tuple_regexp_select(ImageFiles, ['\\.(bmp|jpg)$','ignore_case'], Files) * 打开窗口 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 dump_window(WindowHandle,'bmp',Directory + BaseName + '_adj') stop () endfor ``` ![](https://img.tnblog.net/arcimg/hb/9bf5838c25f54c7a8f3c101f8d52655e.png) tn2>继续F5可以跳入下一张图片 ![](https://img.tnblog.net/arcimg/hb/1de9bf9757ef4d59b8c9e3cbd278b189.png) ### 图像读取 ```bash read_image (Image, 'printer_chip/printer_chip_02') read_image (Image1, ['printer_chip/printer_chip_01', 'printer_chip/printer_chip_05']) ** 选择对象中目录 select_obj (Image1, ObjectSelected, 1) ** 统计对象中目录数量 count_obj (Image1, Number) ``` ![](https://img.tnblog.net/arcimg/hb/867459c0b3da4a1f809af75936dbe26e.png)