1.Assign算子:assign(Input, Result),对变量以及表达式或数组赋值
例: assign(2*(X)+(Y),Z)
等同于Z:=2*(X)+(Y)
2.初始化:
Insert : 对数组中的某一个值进行赋值。
显示结果为:[1, 0, 3, 2, 5, 6, 7, 8, 9],即对索引3后面元素,数组Tuple1中第4个元素赋值2.
example:
read_image (Mreut, 'mreut')
threshold (Mreut, Region, 190, 255)
Areas := []
for Radius := 1 to 50 by 1
dilation_circle (Region, RegionDilation, Radius) //利用半径为Radius的圆对Region进行膨胀运算,输出
area_center (RegionDilation, Area, Row, Column) //输出区域的面积和中心像素坐标
Areas[Radius-1] := Area
endfor
3.基本数组操作极其对应的算子
t := [t1,t2]
i := |t|
v := t[i]
t := t[i1:i2]
t := subset(t,i)
t := remove(t,i)
i := find(t1,t2) 找到t2数组在t1数组中出现位置索引
t := uniq(t)
4.创建数组
(1)gen_tuple_const函数
tuple := gen_tuple_const(100,4711) //创建一个具有100个元素的,每个元素都为4711的数据
tuple_new := gen_tuple_const(|tuple_old|,4711) //创建一个和原来数据长度一样的数据
上面的函数也可以通过如下表达式实现:tuple_new := (tuple_old * 0) + 4711
(2)当数组中的元素不同时,需要用循环语句对数组中的每一个元素赋值
例如:tuple := []
for i := 1 to 100 by 1
tuple := [tuple,i*i]
endfor
// HTuple→VC 数据类型转换
HTuple hTuple = 1234;
int i = hTuple[0].I(); // i=1234
long l = hTuple[0].L(); // l=1234
long lNumber = hTuple.Num(); // lNumber=1,数据个数
double d = hTuple[0].D(); // d=1234.0000
hTuple = "1234";
CString strBuffer = hTuple[0].S(); // strBuffer="1234"
// VC→HTuple 数据类型转换
int ii = 1234;
double dd = 1234.1234;
CString strTemp = "Halcon";
HTuple hTuple2;
hTuple2[0] = ii; // hTuple2[0].I()=1234
hTuple2[1] = dd; // hTuple2[1].D()=1234.1234
hTuple2[2] = strTemp.GetBuffer(); // hTuple2[2].S()="Halcon"
i = hTuple2[0].I(); // i=1234
d = hTuple2[1].D(); // d=1234.1234
strBuffer = hTuple2[2].S(); // strBuffer="Halcon"
lNumber = hTuple2.Num(); // lNumber=3,数据个数
另外:
Halcon 的路径类似为“D:/Addr/a.jpg”,即以“/”为分隔符。
和 VC 所用的“\”不同,需要转换。