0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

新机器视觉 来源:CSDN技术社区 作者:小邢同学 2021-04-22 11:01 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

1、名词解释

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

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

d2faea3a-a29b-11eb-aece-12bb97331649.png

d3093054-a29b-11eb-aece-12bb97331649.png

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

d31d3810-a29b-11eb-aece-12bb97331649.png

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.显示阶段:对结果进行显示 如下图:

d3555b6e-a29b-11eb-aece-12bb97331649.png

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

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

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

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

d397e0b0-a29b-11eb-aece-12bb97331649.png

之后显示页面如下:

d59880fe-a29b-11eb-aece-12bb97331649.png

首先点击一般设置栏,编辑函数名称(你想把这个函数名叫什么就命什么名),再点击“参数”。 之后显示页面如下:

d5cb8c88-a29b-11eb-aece-12bb97331649.png

图标参数含义:即图片、区域、Xld轮廓等图形变量。 变量参数含义:指我们在程序中用得到的整形、浮点型、字符串、数组等变量

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

d5f902da-a29b-11eb-aece-12bb97331649.png

点击移除后:

d61eb28c-a29b-11eb-aece-12bb97331649.png

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

我们由需求分析步骤可知,我们需要: 传入一个图像变量,传出外接圆的坐标(X,Y)与外接圆的半径 修改参数页面变量如下,并点击一般文档切换栏目:

d6391406-a29b-11eb-aece-12bb97331649.png

一般文档栏目:(可以对函数进行说明性文档的编写)包括了函数的描述、实例程序、参数说明、高级注意事项4个部分。我们一般不进行填写。

d6518fd6-a29b-11eb-aece-12bb97331649.png

点击上图中的参数文档: 参数文档包含了这个函数的详细的参数意义说明:如下图:

d67c55b8-a29b-11eb-aece-12bb97331649.png

我们如果将一般文档和参数文档都填完整那么会出现什么情况呢? 你的函数有了一份像halcon算子一样的说明文档: 即选中一个算子,点击F1出现的算子帮助文档!

d6a29052-a29b-11eb-aece-12bb97331649.png

d6c0a326-a29b-11eb-aece-12bb97331649.png

完成上述所有步骤点击确定按钮即可生成函数

d729d8a0-a29b-11eb-aece-12bb97331649.png

d75d7f84-a29b-11eb-aece-12bb97331649.png

③运行验证与函数更改操作

点击F5运行程序或者点击F6单步运行程序验证程序的准确性。 当F6单步调试到函数时可以点击F7运行到函数内部执行。点击F8跳出函数执行

如果想查看函数代码,选中函数,点击鼠标右键,选择显示函数即可查看代码:

d78c5a0c-a29b-11eb-aece-12bb97331649.png

可以点击红色方框内的后退按钮退出当前函数显示 如下图: 点击蓝色方框内的 按钮,打开函数编辑窗口(即上边我们进行函数名修改、接口参数变化的窗口)

d7a92b14-a29b-11eb-aece-12bb97331649.png

原文链接:https://blog.csdn.net/cashmood/article/details/105195235

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 封装
    +关注

    关注

    128

    文章

    9139

    浏览量

    147861
  • 函数
    +关注

    关注

    3

    文章

    4406

    浏览量

    66812
  • 代码
    +关注

    关注

    30

    文章

    4940

    浏览量

    73116

原文标题:详解Halcon自定义函数封装方法(全网最详细)

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    无图形界面模式下自定义检查工具的应用

    此前文章已介绍 ANSA 中的自定义检查工具。本文将探讨该功能在无图形界面(No-GUI)模式下的应用,旨在满足标准化工作流程的需求,适用于需要高度自动化的前处理场景。通过集成自定义检查,用户可实现工作流程的高效自动化运行。
    的头像 发表于 11-30 14:13 277次阅读
    无图形界面模式下<b class='flag-5'>自定义</b>检查工具的应用

    riscv实现自定义指令并用qemu运行

    利用qemu模拟硬件平台,实现特定指令解析,同时写裸机代码来测试该指令的运行情况。当然,如果实现的很好,是需要修改riscv的gcc的,让自己的扩展指令加入。这里不做修改,后面会详细描述细节。 自定义
    发表于 10-31 07:37

    采用汇编指示符来使用自定义指令

    具体实现 1、采用.word .half .dword等汇编指示符直接插入自定义指令,这种方法需要自己指定寄存器。其中.word为插入一个字的数据即32位,.half为插入半字即16位
    发表于 10-28 06:02

    如何在e203 SOC中添加自定义外设

    如何在E203 中添加自定义的外设,困扰已久,以下是一个从别处借鉴而来的方法: 1、设计好自定义外设的RTL后,在其中添加ICB总线的握手协议和读写寄存器。 2、设计一个对外接口,用来设定
    发表于 10-20 10:38

    大彩讲堂:VisualTFT软件如何自定义圆形进度条

    VisualTFT软件如何自定义圆形进度条
    的头像 发表于 07-07 17:10 1189次阅读
    大彩讲堂:VisualTFT软件如何<b class='flag-5'>自定义</b>圆形进度条

    KiCad 中的自定义规则(KiCon 演讲)

    “  Seth Hillbrand 在 KiCon US 2025 上为大家介绍了 KiCad 的规则系统,并详细讲解了自定义规则的设计与实例。  ”   演讲主要围绕 加强 KiCad 中的自定义
    的头像 发表于 06-16 11:17 1450次阅读
    KiCad 中的<b class='flag-5'>自定义</b>规则(KiCon 演讲)

    HarmonyOS应用自定义键盘解决方案

    自定义键盘是一种替换系统默认键盘的解决方案,可实现键盘个性化交互。允许用户结合业务需求与操作习惯,对按键布局进行可视化重构、设置多功能组合键位,使输入更加便捷和舒适。在安全防护层面,自定义键盘可以
    的头像 发表于 06-05 14:19 1564次阅读

    如何使用自定义设置回调函数

    你好,我正在尝试编写自己的自定义设置回调函数,并使用 fastEnum=false。 是否有任何代码示例或资料可供我参考? void CyU3PUsbRegisterSetupCallback
    发表于 05-21 06:11

    LabVIEW运动控制(三):EtherCAT运动控制器的高效加工指令自定义封装

    LabVIEW高效加工指令自定义封装
    的头像 发表于 04-08 13:49 3257次阅读
    LabVIEW运动控制(三):EtherCAT运动控制器的高效加工指令<b class='flag-5'>自定义</b><b class='flag-5'>封装</b>

    如何添加自定义单板

    在开发过程中,用户有时需要创建自定义板配置。本节将通过一个实例讲解用户如何创建属于自己的machine,下面以g2l-test.conf为例进行说明。
    的头像 发表于 03-12 14:43 1078次阅读

    如何快速创建用户自定义Board和App工程

    概述自HPM_SDKv1.7.0发布开始,在HPM_ENV中新增了user_template文件夹,以方便用户快速创建自定义的Board和App工程。user_template是用户模板工程,用户
    的头像 发表于 02-08 13:38 994次阅读
    如何快速创建用户<b class='flag-5'>自定义</b>Board和App工程

    Altium Designer 15.0自定义元件设计

    电子发烧友网站提供《Altium Designer 15.0自定义元件设计.pdf》资料免费下载
    发表于 01-21 15:04 0次下载
    Altium Designer 15.0<b class='flag-5'>自定义</b>元件设计

    think-cell:自定义think-cell(四)

    C.5 设置默认议程幻灯片布局 think-cell 议程可以在演示文稿中使用特定的自定义布局来定义议程、位置和议程幻灯片上的其他形状,例如标题或图片。通过将此自定义布局添加到模板,您可以为整个组织
    的头像 发表于 01-13 10:37 877次阅读
    think-cell:<b class='flag-5'>自定义</b>think-cell(四)

    智能语音识别照明解决方案,平台自定义,中英切换

    智能语音识别照明方案引入NRK3502芯片,支持平台自定义,离线控制,中英双语切换。NRK3502具备高性能和灵活自定义能力,可推动智能照明革新,控制其他智能设备,为国际用户提供全方位智能生活体验。
    的头像 发表于 01-10 13:23 798次阅读
    智能语音识别照明解决方案,平台<b class='flag-5'>自定义</b>,中英切换

    think-cell;自定义think-cell(一)

    本章介绍如何自定义 think-cell,即如何更改默认颜色和其他默认属性;这是通过 think-cell 的样式文件完成的,这些文件将在前四个部分中进行讨论。 第五部分 C.5 设置默认议程幻灯片
    的头像 发表于 01-08 11:31 1237次阅读
    think-cell;<b class='flag-5'>自定义</b>think-cell(一)