提示:Halcon中支持向量需要Halcon版本在12.0及其以上版本才可以支持。
- *vector是一个可以容纳任意数量元素的容器,所有元素必须具有完全相同的变量类型(即元组、图形对象或向量)。
- *变量类型"vector"特定于HDevelop中使用,它在HDevelop 12.0或更高版本中可用。
- *请注意,使用向量变量的程序不能在旧版本的HDevelop中执行。
- *称为一维向量的元组或对象,称为二维向量的元组或对象,依此类推等等。
- *向量的类型不能在程序中改变,即它的维数必须保持不变,元组的向量不能被分配图形对象,反之亦然。
- *一维向量
- vector1 := {[1], [2], [3]} //代码后注释可用双斜线
- *里面元组为1的情况下可以不要方括号
- vector1 := {1, 2, 3}
- *变量带入与计算
- t1 := 5
- vector2 := {t1, t1 * 2, 3}
- *获取向量的长度
- vec_len:=vector2.length()
- *获取里面的元素,通过at(索引)方法获取
- for Index := 0 to vec_len-1 by 1
- vec_current := vector2.at(Index)
- endfor
- *修改索引2(第三个)值为15
- vector2.at(2) := 15
- *连接另外一个向量组成新的向量
- vector3 := vector2.concat(vector1)
- *清空
- vector3.clear()
- *插入数据到索引位置 结果依次变成{[10],[20]}
- vector3.insert(0,10)
- vector3.insert(1,20)
- *移除索引为0,则只剩下{[20]}
- vector3.remove(0)
- *图形向量 和上面的控制变量操作方法一致
- read_image (Image, 'clip')
- threshold (Image, Region, 0, 63)
- connection (Region, ConnectedRegions)
- vectorO := {Image, Region, ConnectedRegions}
- *获取图形向量的长度
- vecO_len:=vectorO.length()
- *打印向量里元素的图形
- gen_empty_obj (EmptyObject)
- for Index := 0 to vecO_len-1 by 1
- EmptyObject := vectorO.at(Index)
- endfor
- *清空图形变量
- vectorO.clear()
- *错误的代码 Image不属于元组类型变量,而属于图形变量
- *vectorE:={['51halcon'],[1111],Image}
- *连续操作 设置 v 为 {5, 4, 2, 3}
- v := {1, 2, 3}
- v.insert(1, 5).insert(2, 4).remove(0)
- *判断两个相等与否 == !=
- a:={1,2,3}
- b:={1,2,3}
- dev_get_window (WindowHandle)
- if(a == b)
- disp_message (WindowHandle, '两向量相等', 'window', 12, 12, 'green', 'true')
- else
- disp_message (WindowHandle, '两向量不等', 'window', 12, 12, 'green', 'true')
- endif
- *手动实现声明向量来存储点位数据,由于无法直接声明{},所以赋值一个初值数据,最后要删除的
- VectorPos:={[0,0]}
- for i :=1 to 10 by 1
- pts:={[i*2,i*5]}
- VectorPos:=VectorPos.concat(pts)
- endfor
- VectorPos.remove(0)
- *二维向量,其中行1为vector1,行2为{[4,5,6,7], [8,9]}
- vectorV := {vector1, {[4,5,6,7], [8,9]}}
- *获取二维向量 行2的第一组和第二组值
- A:=vectorV.at(1).at(0)
- B:=vectorV.at(1).at(1)
- *修改行2的[8,9]元素为[8,10],注意方括号里面是元组操作方式
- vectorV.at(1).at(1)[1] := 10
- *获取行2的元素长度
- vec_line2_len :=vectorV.at(1).length()
- *可以定义空向量{}
- vectorV2 := {{1,2}, {}}
- *空向量没有指定类型
- *将空向量{}赋值给向量等同于使用clear()方法
- vectorO2 := vectorO
- vectorT2 := vector1
- vectorV2 := vectorV
- vectorO2 := {}
- vectorT2 := {}
- vectorV2 := {}
- *向量转换成元组
- convert_vector_to_tuple (vectorV, T) // T := [1, 2, 3, 4, 5, 6, 7, 8, 10]
- *元组转换成向量
- *注意:第二个参数是元组的长度,设置1就是每个向量元素的长度为1,依次类推
- convert_tuple_to_vector_1d (T, 1, ResultVector)
复制代码 |