专栏名称: 新机器视觉
最前沿的机器视觉与计算机视觉技术
目录
相关文章推荐
证券时报  ·  重磅提示!交易仅剩一天 ·  22 小时前  
中国证券报  ·  “停牌潮”!什么原因? ·  昨天  
中国证券报  ·  宇树科技,高薪求才 ·  昨天  
中国证券报  ·  凌晨爆发!中国资产全线大涨 ·  2 天前  
上海证券报  ·  茶饮巨头突变:暂停加盟申请 ·  3 天前  
51好读  ›  专栏  ›  新机器视觉

详解Halcon自定义函数封装方法(全网最详细)

新机器视觉  · 公众号  ·  · 2024-09-07 21:04

正文

有网友说不太清楚这个halcon函数的封装方法。今天写个教程帖子,大家一起进步分享。

1、名词解释

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

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


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

2、例子介绍

1、处理原图与任务:

要求求亮区外圆半径大小。

2、代码与解析:

* 读入图片
read_image (Image, ‘C:/Users/Administrator/Desktop/1.jpg’)


  • 根据图片打开窗口
    dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)

  • 显示图片,用于预览
    dev_display (Image)

  • 二值化
    binary_threshold (Image, Region, ‘max_separability’, ‘light’, UsedThreshold)

  • 分割连通域
    connection (Region, ConnectedRegions)

  • 使用特征筛选去掉小面积区域的干扰
    select_shape (ConnectedRegions, SelectedRegions, ‘area’, ‘and’, 5000, 1000000000)

  • 合并区域,为下一步求取最小外接矩形做准备
    union1 (SelectedRegions, RegionUnion)

  • 求取最小外接矩形
    smallest_circle (RegionUnion, Row, Column, Radius)

  • 生成一个圆形,用于显示
    gen_circle (Circle, Row, Column, Radius)

*显示结果前的准备
dev_clear_window ()
dev_set_draw (‘margin’)
dev_set_line_width (3)
dev_set_color (‘red’)

  • 显示相关结果
    dev_display (Image)
    dev_display (Circle)
    disp_message (WindowHandle, ‘圆环半径: ‘+Radius, ‘window’, 50, 50, ‘black’, ‘true’)

3、Halcon函数封装方式


Halcon的函数创建分为以下几个步骤:
1、明确需求,要封装的函数要实现什么功能
2、选取函数部分进行函数创建,更改函数接口,即更改输入输出变量
3、运行验证与函数更改操作

①明确需求

我们拿上边的这个程序举例,我们这个程序完成的任务主要是: 求取外接圆的半径并且显示

我们看代码一共分为 三个部分:
1.准备阶段:读入图片、打开窗口、预览等工作。
2.处理阶段:进行图像处理,求取结果
3.显示阶段:对结果进行显示
如下图:

明确1:我们需要将第二部分“处理阶段的算子封装成一个函数”


此时我们再看处理阶段的代码,我们由分析可知:
1、此段代码需要一个图片,用于图像处理
2、需要得出圆环外接圆这个结果(外接圆的位置与半径)
由此确定:
传入一个图像变量,传出外接圆的坐标(X,Y)与外接圆的半径
到此需求已经明确。

②选取函数部分进行函数创建,更改函数接口


选中处理阶段函数,右键,点击“创建新函数”。如下图所示:

之后显示页面如下:
首先点击一般设置栏,编辑函数名称(你想把这个函数名叫什么就命什么名),再点击“参数”。
之后显示页面如下:
图标参数含义:即图片、区域、Xld轮廓等图形变量。
变量参数含义:指我们在程序中用得到的整形、浮点型、字符串、数组等变量


我们可以点击添加变量按钮进行输入输出变量的添加操作
如果我们要进行删除变量操作,操作方式如下图:
首先选中变量,点击移除

点击移除后:
也可以通过选中函数后点击“上移”、“下移”更改变量顺序。


我们由需求分析步骤可知,我们需要:
传入一个图像变量,传出外接圆的坐标(X,Y)与外接圆的半径
修改参数页面变量如下,并点击一般文档切换栏目:
一般文档栏目:(可以对函数进行说明性文档的编写)包括了函数的描述、实例程序、参数说明、高级注意事项4个部分。我们一般不进行填写。
点击上图中的参数文档:







请到「今天看啥」查看全文


推荐文章
证券时报  ·  重磅提示!交易仅剩一天
22 小时前
中国证券报  ·  “停牌潮”!什么原因?
昨天
中国证券报  ·  宇树科技,高薪求才
昨天
中国证券报  ·  凌晨爆发!中国资产全线大涨
2 天前
上海证券报  ·  茶饮巨头突变:暂停加盟申请
3 天前
刘晓博说楼市  ·  当你在看手机的时候,中情局正看着你!
7 年前
大叔爱吐槽  ·  舌头穿钉的真相...20则骨骼清奇的漫画
7 年前