工控编程吧
标题:
halcon控制相关函数详解
[打印本页]
作者:
qq263946146
时间:
2019-11-5 21:40
标题:
halcon控制相关函数详解
(, 下载次数: 1)
上传
点击文件名下载附件
Halcon有相当多的函数,按其实现功能不同进行了分类。
有些是视觉相关的函数,有些仅是辅助功能的函数。
有些是开发必用的函数,有些仅仅是在特定环境下实现特定功能的函数。
这章节开始介绍非常常用,但又与视觉处理相关不大的函数。
具体如上图,当前章节从控制类型开始介绍。
我们通过在Hdevelop环境下使用此分类下全部函数,
展示函数实现的效果与功能,进而了解与熟悉这类函数。
一.assign
将新的变量赋值为指定控制变量。
正常使用时,直接用代码实现。
如已有变量a[1] := 1,
使用函数效果为 a[1] := 1 Result := a
二.assign at
将数组元素赋值为指定变量,正常使用时,直接用代码实现
三.comment 注释,
正常使用时用*注释形式表示;
四.convert_tuple_to_vector_1d(InputTuple, SubTupleLength , ResultVector)
将数组元素分配分向量
五.convert_vector_to_tuple(InputVector , ResultTuple)
将一向量内元素转换到一个单一的数组内。
下面是这两函数的例程:
在HDevelop中,除了已有的两种变量类型,
数组和图像对象,还有第三变量类型:向量。
向量是一个容器,可以容纳任意数量的元素,
所有这些元素都必须是完全相同的变量类型(如 数组,图像对象或向量)。
对于内存等的管理,向量在HDevelop与C++标准模板库中执行方法相同。
命名:一个数组向量(或图像向量)被称为一维,含数组向量的向量叫二维,
以此类推。(所以数组或图像对象维数为零)
dev_close_window ()
dev_update_off ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
向量的构建* 最简的方法定义一个向量,就是在圆括号内,用逗号将元素分开来定义,
如下Vector1 := {1,2}
*注意{[1,2]} 与{1,2}不同Vector2 := {[1,2]}
*向量元素可以是常量,表达式,或变量
Tuple1 := [5,6]
Tuple2 := 'eight'
Vector3 := {Tuple1,Tuple2}*向量也可以包含图像对象
read_image (ImageFabrik, 'fabrik')
read_image (ImagePatras, 'patras')
ImageVector := {ImageFabrik,ImagePatras}*也可以使用多维向量
Vector2dim := {{1,2},Vector3}
Vector3dim := {Vector2dim,{Vector1,Vector2}}
*要注意向量内全部元素的类型必须相同
*例如,下面的定义不正确
* InvalidExpression := {Vector1,Vector2dim}
* 向量元素的访问*向量元素以.at() 的方式 进行访问Tuple := Vector3.at(0)
Image := ImageVector.at(1)
*这种方式.at()也可以放在表达式左边
*例如Vector4.at(0) := Tuple
*也可以向一个不存在向量的元素写入数据,如果需要,向量会自动用O填充前面元素
Vector5.at(4) := Tuple
*向量元素也可作为函数参数使用,只要类型匹配。
for I := 0 to ImageVector.length() - 1 by 1
sobel_amp (ImageVector.at(I), ImageVectorSobel.at(I), 'sum_abs', 3)
.insert() 在向量指定索引位置插入元素 Vector5.insert(1,2)
* 下面形式赋值,2--7元素会被自动赋值为0 Vector5.insert(8,10)
* 向量变换:
*将数组转换为一维向量
Tuple3 := [1,2,3,4,5,6,7,8]convert_tuple_to_vector_1d (Tuple3, 1, Vector1FromTuple3)
convert_tuple_to_vector_1d (Tuple3, 2, Vector2FromTuple3)
*convert_vector_to_tuple将输入的任意维数的向量内的数组转换到输出数组中convert_vector_to_tuple (Vector5, TupleFromVector5)convert_vector_to_tuple (Vector2dim, TupleFromVector2dim)
* dev_inspect_ctrl 变量视窗可以用于查看向量变量dev_inspect_ctrl ([Tuple3,Vector1FromTuple3,Vector2FromTuple3,Vector5,TupleFromVector5,Vector2dim,TupleFromVector2dim,Vector3dim])
六. executable_expression 对指定变量赋值,使用时一般用代码实现,也可用算子窗口输入
七。exit 关闭HDevelop程序,相同于文件-->退出功能,类似C++语言exit(0)
八. 在导出代码中插入任意文本;
如# Result1,导出效果为Result1
九.global 定义一个全局变量,在全部函数中可访问例如定义:
read_image(image,'fabrik')
global object image
十.import 导入一个或多个外部函数。
如import ./import_relative,加载同级目录import_relative文件夹内全部文件:init.hdvp, calculate_results.hdvp
这样就可调用 两文件内的函数,init,calculate_results,
前提是自己的工程已保存为文件
十一。 par_join等待一个或多个子线程执行结束 ,
例如
text := '123'
import ./import_relativepar_start <ThreadID1> : init(text,text)
par_start <ThreadID2> : calculate_results(text,text)
* wait until both procedures have finished
par_join ([ThreadID1, ThreadID2])
十二. return 结束函数,返回;
十三. stop 暂停程序执行,按F5,HALCON 继续
十四.throw 抛出自定义或捕获的异常,
try catch (Exception) endtry,关键字参考C++语言
例如
try
catch (Exception)
throw ([Exception, UserData])
endtry
十五.
switch (Exception)
case 1:
break
continue
default:
endswitch
关键字参考C++语言
例如
switch (Index)
case 1:
break;
case 7:
continue
default:
break
endswitch;
十六.
if (Index)
else
elseif (text)
ifelse (Index)
endif
关键字参考C++语言
十七.for Index := 1 to 5 by 1
endfor
关键字参考C++语言
十八.repeat
until (Index)
关键字参考C++语言
十九.
while (Index)
endwhile
关键字参考C++语言
[halcon]1[/halcon]
[MFC408]1[/MFC408]
[weixinlianxi]1[/weixinlianxi]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4