1、第第2章章 HALCON编程基础编程基础l HALCON软件的编程环境软件的编程环境Hdevelop是交互式的,它的操作窗口和是交互式的,它的操作窗口和编程界面简洁、易操作。本章主要介绍编程界面简洁、易操作。本章主要介绍Hdevelop的使用,并介绍的使用,并介绍HALCON的控制语句,以及编程环境下图像的读取、显示和转换。的控制语句,以及编程环境下图像的读取、显示和转换。 HALCON编程基础与工程应用编程基础与工程应用2.12.22.32.4HDevelop应用界面介绍HALCON控制语句 HALCON算子 HALCON图像读取、显示和转换Blob分析第第2章章 HALCON编程基础编程基
2、础HALCON编程基础与工程应用编程基础与工程应用2.1 HDevelop应用界面介绍应用界面介绍l HDevelop图形组件是开始视觉处理算法的一个很好的工具,其类似图形组件是开始视觉处理算法的一个很好的工具,其类似于于VC、VB、Delphi等编译环境,它有自己的交互式界面,可以编译等编译环境,它有自己的交互式界面,可以编译和测试视觉处理算法,可以方便查看处理结果,也可以导出算法代码。和测试视觉处理算法,可以方便查看处理结果,也可以导出算法代码。HALCON编程基础与工程应用编程基础与工程应用1. HDevelop预览预览HALCON安装完成后,点击图标运行安装完成后,点击图标运行HALC
3、ON软件,下面介绍其软件,下面介绍其主要的界面。主要的界面。1.主界面主界面整个界面分为标题栏、菜单栏、工具栏、状态栏和四个活动界面窗整个界面分为标题栏、菜单栏、工具栏、状态栏和四个活动界面窗口,四个活动界面窗口分别是图像变量窗口、算子窗口、变量窗口口,四个活动界面窗口分别是图像变量窗口、算子窗口、变量窗口和程序窗口,如图和程序窗口,如图2-1所示。如果窗口排列不整齐,可以选择菜单所示。如果窗口排列不整齐,可以选择菜单栏栏窗口窗口排列窗口,重新排列窗口。排列窗口,重新排列窗口。图 2-1 HALCON主界面HALCON编程基础与工程应用编程基础与工程应用1. HDevelop预览预览2.菜单栏
4、菜单栏菜单栏包含所有菜单栏包含所有HDevelop的功能命令,单击打开后有下拉菜单,的功能命令,单击打开后有下拉菜单,如图如图2-2所示。所示。图2-2 菜单栏4.状态栏状态栏状态栏显示程序的执行情况,如图状态栏显示程序的执行情况,如图2-4所示。所示。图2-3 工具栏3.工具栏工具栏工具栏包含了一系列常用功能的快捷方式,如图工具栏包含了一系列常用功能的快捷方式,如图2-3所示。所示。图2-4 状态栏HALCON编程基础与工程应用编程基础与工程应用1. HDevelop预览预览5.打开一个例程打开一个例程HALCON提供了大量基于应用提供了大量基于应用的示例程序,下面打开一个的示例程序,下面打
5、开一个HALCON自带例程,简单了解自带例程,简单了解一下一下HALCON程序的结构。程序的结构。从菜单栏从菜单栏文件文件浏览程序浏览程序打开打开一个例程,比如打开一个例程,比如打开ball.hdev,如图如图2-5,2-6所示。点击工具栏所示。点击工具栏“运行运行”工具图标,运行程序,结工具图标,运行程序,结果如图果如图2-7所示。所示。图2-5 浏览例程HALCON编程基础与工程应用编程基础与工程应用1. HDevelop预览预览图2-7 例程运行结果图2-6 打开例程HALCON编程基础与工程应用编程基础与工程应用 2. HDevelop窗口介绍窗口介绍1.HDevelop算子窗口算子窗
6、口算子窗口显示的是算子的重要数据,包含了所有的参数,各个变量算子窗口显示的是算子的重要数据,包含了所有的参数,各个变量的型态,以及参数数值,如图的型态,以及参数数值,如图2-8所示。这里会显示参数的默认值,所示。这里会显示参数的默认值,以及可以选用的数值。每一个算子都有联机帮助。另一个常用的是以及可以选用的数值。每一个算子都有联机帮助。另一个常用的是算子名称的查询显示功能,在一个算子名称的查询显示功能,在一个combo box里,只要键入部分字里,只要键入部分字符串甚至开头的字母,即可显示所有符合名称的算子供选用,如图符串甚至开头的字母,即可显示所有符合名称的算子供选用,如图2-9所示。所示。
7、图2-8 算子窗口HALCON编程基础与工程应用编程基础与工程应用2. HDevelop窗口介绍窗口介绍2.HDevelop程序窗口程序窗口 程序窗口是用来显示一个程序窗口是用来显示一个HDevelop程序。它可以显示整个程程序。它可以显示整个程序或是某个运算符。窗口左侧是一些控制程序执行的指示符号。序或是某个运算符。窗口左侧是一些控制程序执行的指示符号。HDevelop刚启动时,可以看到一个绿色箭头的程序计数器刚启动时,可以看到一个绿色箭头的程序计数器(program counter,简称,简称 PC),一个插入符号,还可以设一),一个插入符号,还可以设一个断点(个断点(breaking p
8、oint),窗口右侧显示程序代码,如图),窗口右侧显示程序代码,如图2-10所示。所示。图2-9 算子查询HALCON编程基础与工程应用编程基础与工程应用2. HDevelop窗口介绍窗口介绍在程序编辑窗口点击右键,在下拉菜单显示程在程序编辑窗口点击右键,在下拉菜单显示程序运行调试中的一些设置,如图序运行调试中的一些设置,如图2-11所示。所示。图2-10 程序窗口图2-11 程序调试设置HALCON编程基础与工程应用编程基础与工程应用2. HDevelop窗口介绍窗口介绍HDevelop启动以后,就可以开始从程序窗口输入,逐步建立一个启动以后,就可以开始从程序窗口输入,逐步建立一个HDeve
9、lop 程序。要在程序中新增一行,比如加一个算子,有以下两程序。要在程序中新增一行,比如加一个算子,有以下两个步骤。个步骤。(1)首先要将光标放在新增的地方,用键盘的)首先要将光标放在新增的地方,用键盘的Shift键加上的鼠标左键加上的鼠标左 键,点在要加入的地方,然后从算子菜单中选择,或是由算子窗口键,点在要加入的地方,然后从算子菜单中选择,或是由算子窗口来选用想要加入的数据。来选用想要加入的数据。(2)新的算子会出现在算子窗口中,包含它的参数等数据,此时按)新的算子会出现在算子窗口中,包含它的参数等数据,此时按 下下“输入输入”,就会将它加入程序代码中,成为新增的一行;如果按下,就会将它加
10、入程序代码中,成为新增的一行;如果按下“确定确定”,除了程序代码会新增以外,同时也会执行程序。如果按的,除了程序代码会新增以外,同时也会执行程序。如果按的是是“应用应用”,算子不会新增到程序中,但是会被执行,这样就可以方,算子不会新增到程序中,但是会被执行,这样就可以方便又有效的测试修改参数的结果。便又有效的测试修改参数的结果。如果只要执行某一行,可以将程序计数器(如果只要执行某一行,可以将程序计数器(PC)置于要执行的那行)置于要执行的那行前,再用鼠标左键在该行前单击,然后按前,再用鼠标左键在该行前单击,然后按HDevelop工具栏的工具栏的“单步跳单步跳过函数过函数”,如果单击,如果单击“
11、运行运行”,则程序代码都会执行,直到一个断点或,则程序代码都会执行,直到一个断点或是按是按“停止停止”将其中止。将其中止。HALCON编程基础与工程应用编程基础与工程应用2. HDevelop窗口介绍窗口介绍3. HDevelop变量窗口变量窗口变量窗口显示了程序在执行时产生的各种变量,包括图像变量和控变量窗口显示了程序在执行时产生的各种变量,包括图像变量和控制变量,如图制变量,如图2-12所示。在变量上用鼠标双击,即可显示变量值,所示。在变量上用鼠标双击,即可显示变量值,如图如图2-13所示。如果变量值是图像变量所示。如果变量值是图像变量,鼠标双击,会显示在图形鼠标双击,会显示在图形窗口里。
12、窗口里。图2-12 变量窗口图2-13 变量值HALCON编程基础与工程应用编程基础与工程应用2. HDevelop窗口介绍窗口介绍 4.HDevelop图形窗口图形窗口图形窗口用来显示图像化变量数据,如图图形窗口用来显示图像化变量数据,如图2-14所示。所示。 图2-14 图形窗口图2-15 可视化菜单(1)图形窗口可视化)图形窗口可视化图形窗口可视化的方式可以依据需要来调图形窗口可视化的方式可以依据需要来调整,相关功能位于整,相关功能位于“可视化可视化”菜单下,如图菜单下,如图2-15所示。可以开启数个图形窗口,并且所示。可以开启数个图形窗口,并且自行选用要用的窗口。自行选用要用的窗口。H
13、ALCON编程基础与工程应用编程基础与工程应用2. HDevelop窗口介绍窗口介绍图2-16 图形窗口的3D模式(2)图形窗口的)图形窗口的3D模式模式点击图点击图2-14图形窗口右上角图形窗口右上角“3D点图模式点图模式”,可以将图形窗口变为,可以将图形窗口变为3D模式,如图模式,如图2-16所示。所示。HALCON编程基础与工程应用编程基础与工程应用2. HDevelop窗口介绍窗口介绍 图2-17 灰度直方图(3)HDevelop灰度灰度直方图直方图从菜单栏从菜单栏可视化菜可视化菜单单灰度直方图,打灰度直方图,打开灰度直方图功能窗开灰度直方图功能窗口,进行设置,如图口,进行设置,如图2
14、-17所示。所示。HALCON编程基础与工程应用编程基础与工程应用2. HDevelop窗口介绍窗口介绍 图2-18 特征直方图(4)HDevelop特征特征直方图直方图从菜单栏从菜单栏可视化菜可视化菜单单特征直方图,打特征直方图,打开特征直方图功能窗开特征直方图功能窗口,进行设置和编辑,口,进行设置和编辑,并可根据编辑的直观并可根据编辑的直观结果,插入程序代码。结果,插入程序代码。如图如图2-18所示。所示。HALCON编程基础与工程应用编程基础与工程应用3. HDevelop菜单介绍菜单介绍 图2-19 编辑菜单1.编辑菜单编辑菜单编辑菜单用于编辑菜单用于HDevelop编程时的编辑使用,
15、如图编程时的编辑使用,如图2-19所示。所示。HALCON编程基础与工程应用编程基础与工程应用3. HDevelop菜单介绍菜单介绍 图2-20 执行菜单2.执行菜单执行菜单执行菜单用于程序调试时的设置及运行,如图执行菜单用于程序调试时的设置及运行,如图2-20所示。所示。HALCON编程基础与工程应用编程基础与工程应用3. HDevelop菜单介绍菜单介绍 图2-21 过程菜单3.过程菜单过程菜单过程菜单用于过程菜单用于HDevelop中创建一个过程或者开发新的算子,如图中创建一个过程或者开发新的算子,如图2-21所示。所示。HALCON编程基础与工程应用编程基础与工程应用3. HDevel
16、op菜单介绍菜单介绍 图2-22 助手菜单4.助手菜单助手菜单打开菜单栏打开菜单栏助手,助手菜单是特有的快速原型化工具,具有直助手,助手菜单是特有的快速原型化工具,具有直观可视的特点,可以进行数据分析和特征检测,包括图像获取助观可视的特点,可以进行数据分析和特征检测,包括图像获取助手、匹配助手、摄像机标定助手和测量助手。如图手、匹配助手、摄像机标定助手和测量助手。如图2-22所示。所示。HALCON编程基础与工程应用编程基础与工程应用2.2 HALCON控制语句控制语句 l HALCON提供的控制流与提供的控制流与C/C+的用法类似。一般成对存在,一个的用法类似。一般成对存在,一个是开始的标志
17、,一个是结束的标志。也就是说有是开始的标志,一个是结束的标志。也就是说有if就有就有endif,有,有while就有就有end while。控制语句类型主要由以下几种组成:。控制语句类型主要由以下几种组成:l (1)if条件语句条件语句 ;l (2)switch多分支条件语句多分支条件语句 ;l (3)while循环语句;循环语句;l (4)for循环语句;循环语句;l (5)中断语句。)中断语句。HALCON编程基础与工程应用编程基础与工程应用1. 条件语句条件语句1if条件语句条件语句If条件语句有三种常用的表达形式,下面一一列出。条件语句有三种常用的表达形式,下面一一列出。(1)if(表
18、达式表达式) 语句组语句组1 endif语义为:判断表达式的值,如果表达式的值非零则执行语句组语义为:判断表达式的值,如果表达式的值非零则执行语句组1,否,否则直接转到则直接转到endif。【例【例2-1】if条件语句实例条件语句实例1*赋值赋值cont:=2 *判断变量判断变量cont的值是否大于等于的值是否大于等于1,大于等于大于等于1就执行语句就执行语句cont:=cont-1if(cont=1)cont:=cont-1HALCON编程基础与工程应用编程基础与工程应用1. 条件语句条件语句*if条件语句结束标志条件语句结束标志endif(2)if (表达式表达式) 语句组语句组1 els
19、e 语句组语句组2 endif语义为语义为:判断表达式的值,如果表达式的值非零则执行语句组判断表达式的值,如果表达式的值非零则执行语句组1,否则,否则执行语句组执行语句组2。【例【例2-2】if条件语句实例条件语句实例2cont:=2 *判断变量判断变量cont的值是否大于等于的值是否大于等于1,大于等于大于等于1就执行语句就执行语句cont:=cont-1HALCON编程基础与工程应用编程基础与工程应用1. 条件语句条件语句if(cont=1)cont:=cont-1*cont的值小于的值小于1就执行语句就执行语句cont:=cont+1elsecont:=cont+1*if条件语句结束标志
20、条件语句结束标志endif(3)if (表达式表达式1) 语句组语句组1 elseif (表达式表达式2) 语句组语句组2 else 语句组语句组3 endif HALCON编程基础与工程应用编程基础与工程应用1. 条件语句条件语句语义为:判断表达式的值,表达式语义为:判断表达式的值,表达式1的值非零则执行语句组的值非零则执行语句组1。表达式。表达式1的值为零而表达式的值为零而表达式2的值非零则执行语句组的值非零则执行语句组2,两个表达式的值都为,两个表达式的值都为零则执行语句组零则执行语句组3。【例【例2-3】if条件语句实例条件语句实例3cont:=2 *判断变量判断变量cont是否大于等
21、于是否大于等于1,大于等于大于等于1就执行语句就执行语句cont:=cont-1if(cont=1)cont:=cont-1*判断变量判断变量cont是否小于等于是否小于等于-1,小于等于小于等于-1就执行语句就执行语句cont:=cont+1elseif(cont=-1)cont:=cont+1*如果如果cont大于大于-1小于小于1执行语句执行语句 cont:=cont+2HALCON编程基础与工程应用编程基础与工程应用1. 条件语句条件语句else cont:=cont+2*if条件语句结束标志条件语句结束标志endif 2switch多分支条件语句多分支条件语句当当if.else条件语
22、句使用多层嵌套可以用条件语句使用多层嵌套可以用switch多分支条件语句代替。多分支条件语句代替。格式:格式:switch(条件条件) case 常量表达式常量表达式1: 语句语句1 break . HALCON编程基础与工程应用编程基础与工程应用1. 条件语句条件语句 case 常量表达式常量表达式n: 语句语句n break default : 语句语句n+1 endswitch语义为:将条件值与其后的常量表达式的值逐个比较,当条件的值与语义为:将条件值与其后的常量表达式的值逐个比较,当条件的值与其后的某个常量表达式的值相等时就执行常量表达式后面的所有语句。其后的某个常量表达式的值相等时就
23、执行常量表达式后面的所有语句。每个每个case语句只是一个入口标号,所以不能确定执行的终止点,如果语句只是一个入口标号,所以不能确定执行的终止点,如果只想执行一条只想执行一条case语句,则应该在语句,则应该在case语句的最后使用语句的最后使用break语句结束语句结束switch条件语句。如果条件值与所有的常量表达式的值均不相等则执条件语句。如果条件值与所有的常量表达式的值均不相等则执行行default后面的语句。后面的语句。switch语句中所有常量表达式的值应该是不重复的常量。因为语句中所有常量表达式的值应该是不重复的常量。因为switch语句无法处理浮点数所以条件值必须是整数。如果条
24、件选项涉及取值语句无法处理浮点数所以条件值必须是整数。如果条件选项涉及取值范围、浮点数或两个变量的比较则应该使用范围、浮点数或两个变量的比较则应该使用if.else条件语句。条件语句。 HALCON编程基础与工程应用编程基础与工程应用1. 条件语句条件语句 【例【例2-4】switch条件语句实例条件语句实例I:=5*I的值与其后的常量表达式的值逐个比较的值与其后的常量表达式的值逐个比较switch(I)case 1:I:=I-3*中断语句,跳出中断语句,跳出switch语句语句break*I的值与常量表达式的值相等,执行后面的语句的值与常量表达式的值相等,执行后面的语句case 5:I:=I
25、+5break*I的值与其后所有常量表达式的值都不相等则执行的值与其后所有常量表达式的值都不相等则执行default语句语句default:I:=2*IHALCON编程基础与工程应用编程基础与工程应用1. 条件语句条件语句*switch语句结束标志语句结束标志endswitchHALCON编程基础与工程应用编程基础与工程应用2. 循环控制语句循环控制语句1while循环语句循环语句格式格式:while (条件条件) 循环体语句循环体语句 endwhile语义为:首先对条件值进行判断,若条件值非零则重复执行循环语句,语义为:首先对条件值进行判断,若条件值非零则重复执行循环语句,直到条件值为零时退
26、出直到条件值为零时退出while循环。若条件值始终不为零循环。若条件值始终不为零,则则while循环循环容易成为死循环,这时候需要使用容易成为死循环,这时候需要使用break语句跳出循环。语句跳出循环。【例【例2-5】while循环语句实例循环语句实例In:=1 In_Sum:=0*判断判断In是否小于等于是否小于等于100,小于等于,小于等于100则执行循环体则执行循环体while(In=100)HALCON编程基础与工程应用编程基础与工程应用2. 循环控制语句循环控制语句*求和求和In_Sum:=In_Sum+In*自加自加10In:=In+10*while语句结束标志语句结束标志 end
27、while2for循环语句循环语句格式:格式:for (Index := start to end by step) 循环体循环体 endforFor循环语句是循环语句是HALCON最重要的循环结构,通过控制变量的开始值最重要的循环结构,通过控制变量的开始值至结束值来进行循环,至结束值来进行循环,start为为Index变量的开始值,变量的开始值,end为结束值,为结束值,step为步长值。首先判断为步长值。首先判断Index变量的开始值是否小于结束值,如果小于则变量的开始值是否小于结束值,如果小于则执行循环体,否则循环结束。执行完循环体以后把执行循环体,否则循环结束。执行完循环体以后把Ind
28、ex的值加步长值的值加步长值HALCON编程基础与工程应用编程基础与工程应用2. 循环控制语句循环控制语句作为作为Index的新值,判断的新值,判断Index的新值是否小于结束值。如果小于则继的新值是否小于结束值。如果小于则继续执行循环体,否则循环结束,依次执行直到续执行循环体,否则循环结束,依次执行直到Index的新值大于结束值的新值大于结束值则循环结束。则循环结束。【例【例2-6】for循环语句实例循环语句实例I:=0*循环变量循环变量I从从1到到10,每次增加,每次增加1for J:=1 to 10 by 1*每次循环判断每次循环判断J是否小于是否小于5,小于,小于5则跳过这次循环则跳过
29、这次循环if(J5)breakendif*如果如果J=3跳过此次循环跳过此次循环HALCON编程基础与工程应用编程基础与工程应用3. 中断语句中断语句if(J=3)continue*if语句结束标志语句结束标志endif*求和求和I:=I+J*for语句结束标志语句结束标志endforHALCON编程基础与工程应用编程基础与工程应用2.3 HALCON算子算子1 .HALCON算子及算子编辑窗口算子及算子编辑窗口HALCON算子的基本结构为算子的基本结构为:算子(图像输入算子(图像输入:图像输出图像输出:控制输入控制输入:控制控制输出输出:)HALCON算子中的四种参数被三个冒号依次隔开,分别
30、是:图像输入算子中的四种参数被三个冒号依次隔开,分别是:图像输入参数,图像输出参数,控制输入参数,控制输出参数。一个算子中可参数,图像输出参数,控制输入参数,控制输出参数。一个算子中可能这四种参数不会都存在,但是参数的次序不会变化。能这四种参数不会都存在,但是参数的次序不会变化。HALCON中的中的输入参数不会被算子更改,只被算子使用,算子只能更改输出参数。输入参数不会被算子更改,只被算子使用,算子只能更改输出参数。算子举例:算子举例:threshold(Image:Region:MinGray,MaxGray: )Threshold算子里面算子里面Image为图像输入参数;为图像输入参数;R
31、egion为图像输出参数;为图像输出参数;MinGray和和MaxGray为控制输入参数。由此看出调用这个算子必须输为控制输入参数。由此看出调用这个算子必须输入一个图像参数和两个控制参数才能输出一个图像参数。入一个图像参数和两个控制参数才能输出一个图像参数。下面介绍一下下面介绍一下HALCON算子的编辑窗口,编辑窗口如图算子的编辑窗口,编辑窗口如图2-23和图和图2-24所示。所示。HALCON编程基础与工程应用编程基础与工程应用1 .HALCON算子及算子编辑窗口算子及算子编辑窗口图2-23 算子编辑窗口1HALCON编程基础与工程应用编程基础与工程应用1 .HALCON算子及算子编辑窗口算
32、子及算子编辑窗口图2-24 算子编辑窗口2HALCON编程基础与工程应用编程基础与工程应用1 .HALCON算子及算子编辑窗口算子及算子编辑窗口通过算子编辑窗口我们看到每条算子都有特定的颜色,我们可以通通过算子编辑窗口我们看到每条算子都有特定的颜色,我们可以通过打开参数用户窗口看到编辑窗口中各算子对应的颜色如图过打开参数用户窗口看到编辑窗口中各算子对应的颜色如图2-25所所示。通过菜单栏示。通过菜单栏编辑编辑参数选择参数选择程序窗口程序窗口打开程序窗口。打开程序窗口。一般情况下,语句的颜色分类:一般情况下,语句的颜色分类: 1)褐色:控制和开发算子;)褐色:控制和开发算子;2)蓝色:图像获取和
33、处理算子;)蓝色:图像获取和处理算子;3)浅蓝色:外部函数;)浅蓝色:外部函数;4)绿色:注释。)绿色:注释。HALCON编程基础与工程应用编程基础与工程应用1 .HALCON算子及算子编辑窗口算子及算子编辑窗口在参数用户窗口可以通过对话框修改编辑窗口算子显示的颜色、字在参数用户窗口可以通过对话框修改编辑窗口算子显示的颜色、字体、体、HDevelop系统语言、布局。布局主要是指四个活动界面窗口排系统语言、布局。布局主要是指四个活动界面窗口排列的位置,布局说明如图列的位置,布局说明如图2-26所示。所示。图2-25 程序窗口参数HALCON编程基础与工程应用编程基础与工程应用1 .HALCON算
34、子及算子编辑窗口算子及算子编辑窗口图2-26 布局说明HALCON编程基础与工程应用编程基础与工程应用2. 算子查询算子查询2算子查询算子查询 算子的帮助窗口包含了所有算子的帮助窗口包含了所有HALCON算子的详细说明,可以通过算子的详细说明,可以通过按按F1快捷键打开快捷键打开HALCON算子的帮助窗口,也可以通过下面的步骤算子的帮助窗口,也可以通过下面的步骤打开帮助窗口:菜单栏打开帮助窗口:菜单栏帮助帮助帮助。算子名称具有查询显示作用,帮助。算子名称具有查询显示作用,通过算子查找对话框键入全部或部分算子名称,在弹出的列表里点通过算子查找对话框键入全部或部分算子名称,在弹出的列表里点击想查找
35、的算子,帮助窗口右侧会显示算子的具体说明,如图击想查找的算子,帮助窗口右侧会显示算子的具体说明,如图2-27所示。具体说明包括:所示。具体说明包括:算子名称:算子的英文名称以及大致功能;算子名称:算子的英文名称以及大致功能;算子签名:带有算子参数、分隔符的算子签名;算子签名:带有算子参数、分隔符的算子签名;算子描述:描述算子功能和各参数意义;算子描述:描述算子功能和各参数意义;算子参数:讲解各参数类型和属性;算子参数:讲解各参数类型和属性;HDevelop例程:用到此算子的例程,点击可查看例程。例程:用到此算子的例程,点击可查看例程。HALCON编程基础与工程应用编程基础与工程应用2. 算子查
36、询算子查询图2-27 帮助窗口HALCON编程基础与工程应用编程基础与工程应用3. 算子编辑算子编辑3. 算子编辑算子编辑 算子编辑过程常使用算子窗口来建立算子编辑过程常使用算子窗口来建立HDevelop程序,算子窗口包程序,算子窗口包含了各算子的参数及参数取值。使用算子窗口能够直接对算子参数含了各算子的参数及参数取值。使用算子窗口能够直接对算子参数的取值进行合理选择。的取值进行合理选择。 下面以新建下面以新建threshold程序为例,说明如何使用算子窗口建立某一程序为例,说明如何使用算子窗口建立某一行行 HDevelop 程序。程序。 使用算子窗口建立某一行使用算子窗口建立某一行 HDev
37、elop 程序的步骤为:单击鼠标使程序的步骤为:单击鼠标使光标定位到要创建程序的位置,通过菜单栏光标定位到要创建程序的位置,通过菜单栏算子窗口算子窗口输入算子和输入算子和函数对话框中键入全部或部分算子名称,找到需要编辑的算子函数对话框中键入全部或部分算子名称,找到需要编辑的算子回回车确认车确认打开算子窗口打开算子窗口选择合适的算子参数选择合适的算子参数点击确定。输入算子点击确定。输入算子和函数对话框如图和函数对话框如图2-28所示。所示。HALCON编程基础与工程应用编程基础与工程应用3. 算子编辑算子编辑图2-28 输入算子和函数对话框 一般来说打开算子窗口以后需要对算子的四个参数(图像输入
38、参数,一般来说打开算子窗口以后需要对算子的四个参数(图像输入参数,图像输出参数,控制输入参数,控制输出参数)进行选择。此处图像输出参数,控制输入参数,控制输出参数)进行选择。此处threshold算子只需要对前算子只需要对前3个参数进行选择,各参数的描述如图个参数进行选择,各参数的描述如图2-29所所示。示。HALCON编程基础与工程应用编程基础与工程应用3. 算子编辑算子编辑图2-29 算子窗口参数描述 使用下拉列表直接选择使用下拉列表直接选择threshold算子的图像输入参数与图像输出算子的图像输入参数与图像输出参数名称,通过下拉列表对输入参数的数值进行选择,如图参数名称,通过下拉列表对
39、输入参数的数值进行选择,如图2-30所示。所示。HALCON编程基础与工程应用编程基础与工程应用3. 算子编辑算子编辑图2-30 控制输入参数数值选择 算子编辑有关的快捷键:算子编辑有关的快捷键:F3为激活所选程序行,为激活所选程序行,F4为注销所选程为注销所选程序行。序行。HALCON编程基础与工程应用编程基础与工程应用4. 算子更改算子更改4算子更改算子更改HDevelop程序编写过程中可以利用算子窗口对某一行的算子进行更程序编写过程中可以利用算子窗口对某一行的算子进行更改。改。算子更改步骤为:双击算子名称选中需要更改的算子算子更改步骤为:双击算子名称选中需要更改的算子右键右键打开算打开算
40、子窗口,在弹出的算子窗口中修改参数,算子更改如图子窗口,在弹出的算子窗口中修改参数,算子更改如图2-31所示。所示。图2-31 算子更改HALCON编程基础与工程应用编程基础与工程应用5. 算子运行算子运行5 .算子运行算子运行执行程序时如果只要执行某一行需要选中执行行的前一行,右键选择执行程序时如果只要执行某一行需要选中执行行的前一行,右键选择程序计数器,将执行标示定位到要执行的前一行程序计数器,将执行标示定位到要执行的前一行,通过菜单栏通过菜单栏执行执行单单步跳过程序步跳过程序执行某一行。多行的执行可以通过菜单栏执行某一行。多行的执行可以通过菜单栏执行执行运行运行执执行接下来的所有程序代码
41、,直到遇到断点或是遇到行接下来的所有程序代码,直到遇到断点或是遇到Stop算子才会中止算子才会中止程序。程序。算子运行有关的快捷键:算子运行有关的快捷键:F2为重置程序执行,为重置程序执行,F5为程序运行,为程序运行,F6为单为单步跳过函数,步跳过函数,F7为单步跳入函数,为单步跳入函数,F8为单步跳出函数。为单步跳出函数。HALCON编程基础与工程应用编程基础与工程应用2.4 HALCON图像读取、显示和转换图像读取、显示和转换1. HALCON图像读取图像读取下面介绍图像读取的三种方式。下面介绍图像读取的三种方式。1利用利用read_image算子读取图像算子读取图像算子算子read_im
42、age(:Image:FileName:)中中Image为读取的图像变量名称,为读取的图像变量名称,FileName为图像文件所在的路径,为图像文件所在的路径,HALCON支持多种图像格式。利支持多种图像格式。利用用read_image算子读取图像有下面三种方式:算子读取图像有下面三种方式:(1)利用快捷键调用)利用快捷键调用read_image算子读取图像,读取图像的步骤为:算子读取图像,读取图像的步骤为:按按CTRL+R快捷键打开读取图像对话框快捷键打开读取图像对话框选择文件名称所在的路径选择文件名称所在的路径及变量名称及变量名称选择语句插入位置选择语句插入位置点击确定,快捷键读取图像如图
43、点击确定,快捷键读取图像如图2-32所示。所示。HALCON编程基础与工程应用编程基础与工程应用1. HALCON图像读取图像读取图2-32 快捷键读取图像HALCON编程基础与工程应用编程基础与工程应用1. HALCON图像读取图像读取图2-33 算子窗口读取图像(2)使用算子窗口调用)使用算子窗口调用read_image算子,选择文件名称所在的路径及算子,选择文件名称所在的路径及变量名称,算子窗口读取图像如图变量名称,算子窗口读取图像如图2-33所示。所示。HALCON编程基础与工程应用编程基础与工程应用1. HALCON图像读取图像读取(3)利用)利用for循环读取同一路径下的多张图。首
44、先声明一个循环读取同一路径下的多张图。首先声明一个Tuple数组数组保存文件名及路径,然后利用保存文件名及路径,然后利用for循环依次读取循环依次读取Tuple数组保存路径下数组保存路径下的图像。的图像。【例【例2-8】for循环读取图像实例循环读取图像实例*声明数组声明数组ImagePath:= *将文件名及路径保存到数组将文件名及路径保存到数组ImagePath0:=fin1.png ImagePath1:=fin1.png ImagePath2:=fin1.png *循环读取图像循环读取图像for i:=0 to 2 by 1 read_image(Image,ImagePathi) *
45、for循环结束标志循环结束标志endforHALCON编程基础与工程应用编程基础与工程应用1. HALCON图像读取图像读取2利用采集助手批量读取文件夹下所有图像利用采集助手批量读取文件夹下所有图像利用采集助手批量读取文件夹下所有图像的步骤为:利用采集助手批量读取文件夹下所有图像的步骤为: 菜单栏菜单栏助手助手打开新的打开新的Image Acquisition资源资源图像文件图像文件选择路径选择路径代码生成代码生成插入代码,选择文件夹路径如图插入代码,选择文件夹路径如图2-34,生成批量读取图像的,生成批量读取图像的代码如图代码如图2-35所示。所示。图2-34 选择文件夹路径HALCON编程
46、基础与工程应用编程基础与工程应用1. HALCON图像读取图像读取图2-35 生成批量读取图像的代码HALCON编程基础与工程应用编程基础与工程应用1. HALCON图像读取图像读取【例【例2-9】利用采集助手读取图像实例】利用采集助手读取图像实例 *遍历文件夹遍历文件夹 list_files (C:/Users/Public/Documents/MVTec/HALCON-13.0/examples/images/bicycle, files,follow_links, ImageFiles) *筛选指定格式的图像筛选指定格式的图像tuple_regexp_select (ImageFiles
47、, .(tif|tiff|gif|bmp|jpg|jpeg|jp2|png)$,ignore_case, ImageFiles)* 依次读取图像依次读取图像for Index := 0 to |ImageFiles| - 1 by 1read_image (Image, ImageFilesIndex)*显示图像显示图像dev_display(Image)endforHALCON编程基础与工程应用编程基础与工程应用1. HALCON图像读取图像读取算子讲解:算子讲解:(1)list_image_files (:ImageDirectory,Extensions,Options: ImageFi
48、les)作用:遍历文件夹;作用:遍历文件夹;ImageDirectory: 文件夹路径;文件夹路径;Extensions:文件扩展名,如文件扩展名,如tif|tiff|gif|bmp|jpg|jpeg|jp2|png等;等;Options:搜索选项,如表搜索选项,如表2-1所示。所示。 表2-1 搜索选项files指定搜索的格式为文件指定搜索的格式为文件directories指定搜索格式为文件夹recursive指定可以遍历文件夹下的文件max_depth 5指定遍历的深度max_files 1000指定遍历的最大文件数目表2-1 搜索选项ImageFiles: 文件名数组。文件名数组。HAL
49、CON编程基础与工程应用编程基础与工程应用1. HALCON图像读取图像读取(2)tuple_regexp_select(:Data,Expression:Selection)作用:筛选指定格式的图像;作用:筛选指定格式的图像;Data: 输入的文件名数组;输入的文件名数组;Expression: 文件筛选规则表达式;文件筛选规则表达式;Selection: 筛选出的文件名数组。筛选出的文件名数组。HALCON编程基础与工程应用编程基础与工程应用2. HALCON图像显示图像显示1图形窗口图形窗口默认的图形窗口尺寸为默认的图形窗口尺寸为512*512,因此当图像尺寸不同时显示在图像,因此当图像
50、尺寸不同时显示在图像窗口上会变形,要看到无变形的图像的步骤为窗口上会变形,要看到无变形的图像的步骤为:菜单栏菜单栏可视化可视化图像图像尺寸尺寸适应窗口,即可自动调整窗口。适应窗口,即可自动调整窗口。通常使用通常使用HDevelop算子算子dev_open_window(:Row,Column,Width,Height,Background:WindowHandle)来新增一个图形窗口。来新增一个图形窗口。算子参数算子参数Row、Column为窗口起始坐标(默认值都为零),参数为窗口起始坐标(默认值都为零),参数Width、Height是指窗口的宽度和高度(默认值都为是指窗口的宽度和高度(默认值