halcon本地函数与公用函数的封装

时间:2024-05-19 09:14:57

一、Halcon小函数的封装和修改

1、名词解释:

算子:指Halcon中最基础、最底层的函数(即你看不到它的代码实现),一个算子只有一句话,例如threshold算子。

小函数:由多个算子组合成的函数,我习惯称为小函数。其特点是,可以通过鼠标右键单击“显示函数”打开。如下图:

halcon本地函数与公用函数的封装

 

通常,Halcon代码程序窗口中,算子和小函数的代码颜色是有差异的。

2、小函数封装

下面的算法实现的是得到二维码的面积和中心点坐标

halcon本地函数与公用函数的封装

 

read_image (Image, 'printer_chip/printer_chip_01')

threshold (Image, Region, 128, 255)

fill_up (Region, RegionFillUp)

connection (RegionFillUp, ConnectedRegions)

*找面积最大的一个,即二维码区

dev_display (Image)

select_shape_std (ConnectedRegions, SelectedRegions, 'max_area', 70)

*得到面积和中心点坐标

area_center (SelectedRegions, Area, Row, Column)

图像通常是外部传入的,不适合囊括在小函数内,因此read_image这句不应该囊括在小函数中。

后面的代码传入参数只有一个Image,得到的参数有很多,例如SelectedRegions、Area、Row、Column等。如果我们以Image为入参,以Area为出参,封装过程如下:

① 选中需要封装的全部代码,右键点击“创建新函数”:

 halcon本地函数与公用函数的封装

 

② 在弹出的窗口中填写函数名,如Get_CodeArea:

 halcon本地函数与公用函数的封装

 

③ 然后点击上图中“参数”,删减参数,把不用的参数删掉即可:

 halcon本地函数与公用函数的封装  halcon本地函数与公用函数的封装

 

④ 点击“确定”生成小函数:

 halcon本地函数与公用函数的封装

 

3、小函数修改

由于目的不同,有时候小函数需要增减传入参数,或者增减传出参数。即小函数需要修改。步骤如下:

① 点击下图图标:

 halcon本地函数与公用函数的封装

 

② 选择函数“Get_CodeArea”,然后可以修改函数名,或者参数:

halcon本地函数与公用函数的封装

 

③ 假如我们不需要二维码面积,而需要它的中心点坐标,因此可把函数名改成“Get_Point”,然后改参数如下(先把Area删掉,然后在“控制参数”的输出里添加Row和Column):

 halcon本地函数与公用函数的封装

 

图标参数:一般Region、Image、XLD等都属于图标参数。

控制参数:一般数据、字符串都属于控制参数。

④ 点击“确定”:

 halcon本地函数与公用函数的封装

 

二、Halcon小函数的导出

我们可以直接导出代码,看这个小函数是什么玩意儿:

执行“文件——导出”,弹出页面参数设置如下:

 halcon本地函数与公用函数的封装

 

导出的代码其他地方都不看,我们只关心这个小函数(方法),如果这个小函数的Halcon代码有变化,重新导出以后,将该方法替换掉C#代码里的方法就行了。

 halcon本地函数与公用函数的封装