Halcon中的基础类型与正则表达式
Halcon算子规律
dev_: 系统、窗口相关算子
read_: 与读相关算子基本都是read开始
write_: 与写相关的算子
draw_:在窗口上画图,画区域使用该前缀的算子
gen_: 表示生成类的算子
get_: 表示获取类的算子
set_: 设置参数类的算子
region_: 表示与区域相关操作的算子
tuple_: 与数组操作类相关的算子
select_: 筛选类型的算子
hom_: 与仿射变换矩阵相关的算子
reduce_: 在原图中只显示筛选的区域部分
crop_: 原图中只显示筛选的区域部分真的扣出来
Halcon中的数组
** 元组/数组 tuple
** 创建一个数组
A := [1,3,45,6]
A[0] := 1
A[1] := 2
*******数组定义*******
A:=[]
*空数组--[]
A1:=[1]
*1
A2:=[2,1]
*[2,1]
A3:=[A1,[1,2,3]]
*[1,1,2,3]
B:= A3 + 1
*[2,2,3,4] 每一个数加 1
B1:=A3*2
*[2, 2, 4, 6] 每一个数*2
-----------------------------------------------------------------------
C:=[1,2,3,4,5]
B:=[10,20,30,40,50]
D:=B+C
*数组相加(前提是两个数组元素个数要一样)
*每个对应的元素进行相加
*D的值是[11, 22, 33, 44, 55]
len := |D|
*求数组的长度即数组的元素个数
*len:=5
tuple_length (D,len1)
*求数组的长度即数组的元素个数
*len1:=5
value := D[2]
*通过下标获取元素值,下标是从0开始的
*value :=33
-----------------------------------------------------
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,步长可以为负数
-------------------------------------------------------------
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:插入后保存的数组变量
--------------------------------------------------------------
数组的初始化
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(Tump0,Tump1, Concat)
返回一个随机数tuple数组,数值分布在[0,1)之间
tuple_rand(5,tmp)
生成一个指定长度和初始化值的数组
tuple_gen_const(5, 100, Result )
初始化数组,指定开始值,终止值,步长,得到sequence
tuple_gen_sequence (1, 20, 2, Sequence)
数组操作算子
Halcon的格式化
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'