QQ登录

只需一步,快速开始

halcon控制相关函数详解

[ 复制链接 ]
1.jpg

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从自学到接项目视频教程,另外再赠送全网最全资源  

  

欢迎围观我录制的一套halcon自学视频教程(进入)


  

上位机VC MFC程序开发精典实例大全源码与视频讲解配套下载408例

  

经历1年的编程与录制点击进入查看


  

如果您认可,可联系功能定制!

  

如果您着急,充值会员可直接联系发您资料!

  

QQ联系我

微信扫扫联系我

  


回复

使用道具 举报

点击查看
快速回复 返回列表 客服中心 搜索