Halcon学习路线

前言

由于opencv性能上弱于halcon,且halcon也可以进行联合python进行设计,当然最重要的原因是师兄的遗产是halcon代码所以考虑使用halcon进行传统图像处理,用深度信息进行逻辑推理,以此篇帖子来记录我在halcon上的学习。

如何联合halcon与python

halcon_python联合编程.pdf

我主要从官方文档以及官方案例上进行学习,官方文档又主要以下图为主:

用户指南

halcon安装

安装教程网上太多了,这里附上链接

安装链接:Halcon2024版安装教程附带license(2025.04)更新_halcon license-CSDN博客

license下载地址:license的github地址

快速指南

主要介绍了运算符,就是算子,具体的可以到时候查目录使用,通过不同的算子来实现功能。也可以接入py接口来实现更好的效果,或者提供halcon所没有的功能。算子的输入与输出数据可以为图像以及数字(这是废话吗)
可以简单看下ai概括的:

  • 标志数据(Iconic Data)

    • 图像(Images):由多个通道(像素矩阵)组成,所有通道尺寸相同。支持灵活定义感兴趣区域(ROI)。

    • 区域(Regions):一组像素的集合(无需连通),可通过 connection 操作符拆分为连通区域。

    • XLD(扩展线描述):用于亚像素精度的轮廓或多边形数据(例如边缘检测结果),包含控制点和属性(如边缘强度)。

  • 控制数据(Control Data)

    • 基本类型:整数、实数、字符串等。

    • 句柄(Handles):复杂数据结构的引用(如相机连接、匹配模型),由系统自动管理生命周期,用户不可直接修改。

然后介绍了算子的并行运算,我也是看上了并行运算的加速才使用halcon的。

其次介绍了其与其他语言的结合能力,我最看重的就是它与py的结合能力。

HALCON运算符在导入HALCON/Python模块后, 可作为独立函数直接调用。另外,请注意HALCON/Python中的运算符参数分为函数参数(输入)和返回 值(输出)。
可以详见Programmer's Guide中的 Part IV Programming With HALCON/Python,14章教如何导入为py代码,15章是如何应用,官方好像没有给出直接导出为py代码的方法,可以参考 Python联合Halcon(详细教程)_halcon python-CSDN博客来实现联合开发。
 
官方提供了些深入学习的方式,后续应该会考虑看完示例程序,和解决方法指南。
 
不一定使用arm平台就不看了。
接下来就是重头戏也是这四个里面最值得看的:

用户指南详解

这一部分是英文,可以将官方的html放到edge里面直接进行翻译即可:

这一部分我们主要了解他的操作界面,等一些常用的使用技巧,由于都是对于工具的使用相当于吃药看说明书没必要花太长时间后续在使用的时候都会熟练起来,我们只花费5天时间看完。

第一天(看完前五章暂定)

第一章 HDevelop 介绍

第一章其中具体讲了下

xl与普通版本的区别:一个是处理大型图片一个常规,操作方法类似。还有个较为重要的就是关于鼠标点击与键盘控制在里面的一些快速使用协助开发。其中鼠标的使用方法说了跟没说一样,就是正常的拖动啊,或者连续点击什么的,快捷键也只是说了部分,具体的快捷键在后面会提及。可以在使用的时候慢慢使用熟悉。

第二章 入门

2.2:对话框取消后如果还想看可以在帮助中再次打开对话框,就不需要重新启动,不过一般来说也没人想看对话框就是。

2.3:介绍了下用户界面其中重点说明如下:

变量窗口:双击分隔符,可在水平和垂直分割之间切换此窗口的布局。也可以拖动分隔符来改变区域的大小,好像还有跟踪系统这点倒是不错。其他的虽然我专门转到6.21看变脸窗口好像也没什么都是废话,稍微重要一点的就是,带引号的为不变量

2.4讲窗口自己归类,但是说实话我觉得初始的窗口归类最舒服,所以这里我记录一下,如何使窗口恢复初始状态呢:点击窗口——恢复默认布局使用——停靠图像窗口。

可能有时候你需要更大的一部分窗口你就按着分隔符拖就可以了,这真的需要讲的这么细致吗?

2.5 1.简单说明了一下他们有大量的示例代码可以运用在各个领域,就是作为一个baseline嘛,具体的可以自己改,这些示例代码应该也是本博客后面具体去看的东西。【在文件-浏览xxx示例程序】其实从这点来看开发速度确实比opencv要快,但是opencv有ai加持到也不好说速度难度上哪个更简单更快,但是从性能上还是继续使用halcon吧。

2.又说了一堆废话介绍他的各个窗口

不过这里倒是介绍了这几个东西的作用:

不过这几个哥们都有快捷键所以我觉得也算半个废话吧,其分别是F5,F6,F2。然后说明了可以用命令行启动代码,但是我并不喜欢这样就不看了,我只用它调试然后转化为py进行图像处理

第三章 使用HDevelop获取图像

用三节介绍了三种获取图像方式(我有预感有很多废话)

3.1 从文件获取图像

这真的是个很快的导入图像的方式,你只需要直接将你的图片拖进程序就可以了!它会自动给你这个图片命名就是你的文件名。此外,对话框中还会显示图像预览和基本图像属性(宽度、高度、颜色类型和通道数)。如果您选错了图像,可以点击文件名旁边的按钮,从同一目录中选择另一张。你拖了以后会显示这么个画面:

插入这个代码的位置就是你的光标(鼠标点击)位置。

你也可以一口气拖很多图片来,然后一口气插入代码。当然他插入的时候都是绝对路径,你也可以改成相对路径就是,具体改的方式跟其他程序语言是一样的。

第三种方式是点击文件选择读取图像不过我感觉跟拖差不多一样,具体的对一个文件夹进行很多图像处理(这时候当然也可以拖动不过代码会很难看)在后面会进行更新。

3.2 查看图像

通过图形窗口看或者图像变量看嘛...图像变量的图双击变成图形窗口...

3.3 图像采集

很多时候图片需要我们自己用相机拍或者实时获取相机这时候只需要点击助手——Image Acquisition然后生成如下界面:

这几个按键都非常有用

第一个载入助手设置第二个算是导出助手设置这两个相辅相成,可以使你在另外一台电脑同样相机的情况下快速配置,第三个是你处理好了插入代码第四个第五个分别是获取视频帧和视频流.

点击代码生成块可以进行详细的视频处理方式。

其中采集模式的选择需要按具体的背景来选择:同步采集:优点在于数据一致性高、易于管理事务且实时性较好;缺点是易阻塞其他操作,且一旦采集过程出错,可能导致数据采集不完整或失败,可靠性依赖于采集过程的稳定性。异步采集:优点是速度快、不阻塞其他操作且灵活性高;缺点是数据一致性难保证,管理事务较复杂。

也就是说

  • 同步采集:采集完后处理图像,然后继续采集。实际帧率受处理速度影响。

  • 异步采集:采集完后立即采集下一帧图像,同时进行当前帧的图像处理。实际帧率不受处理速度影响。

整体来说是很方便的可以自动生成代码只需要简单选择一下。

3.3.2 官方推荐直接自动检测接口这样可以把没有的接口全部减少掉然后选就会比较方便

如果没有要保存的就可以忽略,有代码就先保存在搞,还是很人性化的。

点击连接可以进行第二个窗口,当你有多个摄像机接口时就可以在其中进行选择。其中如果你选择了file就是读取目标avi视频文件当然也可以选取摄像头。具体的其实你只要点击连接界面就可以看懂,非常的人性化。如果还不知道这里可以放出官方的原图:

我觉得没必要看,因为很直接。

当你在连接界面点击连接后,就会出现参数界面。太好了没有相机的sdk你也可以更改他的白平衡,饱和度什么的了, 这个软件太好了。

在你更改参数后点击上面的实时可以在图形窗口里显现出来照片并实时更改:

处理好这一切就完成了初步视频流进来时的图像处理,后续你可以在检测中显示出帧率什么的非常方便,在代码生成中有官方对于其控制流中三个选择的解释:

仅初始化:仅生成使用其他选项卡(参数)中指定的参数初始化图像采集接口并正确关闭接口的代码。图像采集和处理的其他代码可稍后添加。——不采集图像只是把之前的参数设置什么的先加载进去。

后面两个选项太显然是什么了就不说了。

点击生成代码得下图:

3.3.3 说明更改助手的设置可以同步更新代码,不过也可以断开连接这个设置也是非常的人性化,下面是官方原话:

在生成的代码插入程序窗口后,HDevelop 会将此代码与对应的助手保持关联。这种关联会一直维持,直到通过 “文件”>“退出助手” 菜单项关闭助手为止。如果通过 “文件”>“关闭对话框” 或窗口的关闭图标来关闭助手,可从 “助手” 菜单顶部恢复该助手。

可以在助手中更改设置并相应更新生成的代码,代码预览会显示生成的代码行将如何更新。此外,可以删除生成的代码行,或者解除对它们的关联。解除关联后,助手与这些代码行之间的内部链接会被切断,之后该助手可以在当前程序的不同位置生成额外代码。

第四章 使用HDevelop进行编程

从这一章他会通过示例来教你如何编程

4.1启动新程序-完全不想说。官方提供的图片地址在:C:\Program Files\MVTec\HALCON-24.11-Progress-Steady\doc\html\manuals\hdevelop_users_guide\images(如果你没更改安装位置的话就在这)

4.2输入运算符-不想说会打字就行,不过这里可以双键左键点击来进入算子窗口来修改。

这里进行算子窗口有个更简单的方式来快速输入:按Tab可以进入下一个选择,shift+Tab可以进入上一个。

确定和应用都会插入并运行,替换不会。应用仅运行刚刚插入的这行。

4.4 我觉得不如它内置的F1选择算子按F1可以导航过去看对应的作用,这步我们后面会经常使用。

并且建议窗口可以对后续算子的选择提供建议。

4.6 官方打开了如下图

此图可通过右键图形窗口选择设置参数即可,这里面可以设置很多东西并进行实时更新,可以在其中自行尝试。

官方这个页面需右键——显示目录——选择

从而查看有多少个区域

你可以在变成你想要的时候选择插入代码。接下来讲交互式操作从而提高其检测精度。

4.8 利用灰度直方图改进阈值

位置在可视化—工具里面:

点击下图以实时更新图片

4.10执行程序

虽然说是重置程序我觉得不如直接F2,然后里面有讲解如何暂停程序,我比较常用stop(),或者断点,其他的我感觉不怎么常用。当然,有时候加载太慢,你不想继续只是想暂停也可以F9。

4.11保存你就直接ctrl+s嘛...

因为很多都是没必要记录的,所以在接下来我仅对我觉得需要记录的记录。

4.12 讲了很多关于特征直方图灰度直方图的应用

4.13 打开图形窗口

由于一开始只给了一个窗口,如果要新建几个窗口就需要插入代码,在程序前加入

  dev_close_window ()
  dev_open_window (0, 0, 512, 512, 'black', WindowHandle)

当然halcon贴心的给我们准备了直接插入代码的方式,点击可视化—插入代码可以对当前你满意的图像直接记录下来。

4.14 循环命令

我真的没想到这个也可以直接插入,算子—控制里面有,这个软件真的很适合非计算机专业的同学使用啊。这一章还写了如何展示文字在里面

这样阅读参考手册太慢了,对于要记录的我后续才会进行记录。

第五章 说明了halcon也具备导包的能力,可以分类做事

如果你对有规划的程序感兴趣的话可以看这部分:HDevelop 用户指南 - 5.9 即时编译 --- HDevelop User's Guide - 5.9   Just-in-Time Compilation

第六章 介绍它的图形界面(第二天)

我建议这一章你不妨自己多点点,或者自己去看看,肯定比他写得好

然后对应的快捷键也都在对应操作的旁边,这里可以放部分截图,可以参考是自己看还是看他写的:

我这里仅记录我不太清楚的功能作用:

重做:撤销当前活动——你撤销以后想恢复的话就可以按这个

所以我感觉不应该叫撤销应该叫恢复

激活:在HDevelop中启用某个变量或代码段的调试跟踪。

停用:隐藏变量或跳过代码段的执行。(在调试时经常使用)

其中第六章状态栏与画布窗口值得一看,如果您的安装位置与我一样可以打开

HDevelop 用户指南 - 6.4 Canvas 窗口 --- HDevelop User's Guide - 6.4   Canvas Window

如果要关注导出程序的话可以关注这个HDevelop 用户指南 - 6.6 导出程序对话框 --- HDevelop User's Guide - 6.6   Export Program Dialog

关于图形展示也很强烈看HDevelop 用户指南 - 6.8 图形窗口 --- HDevelop User's Guide - 6.8   Graphics Window坐标默认为左上角可以通过 dev_set_part 对其进行修改,但只能改当前窗口。

其中还有关于窗口的历史记录保存

但是我试了一下没有搞出来。

后续讲解了一下可视化中的设置参数各个界面的对应操作,因为翻译成中文后的halcon都很容易看懂,就不详细说了。

这里说明了下halcon生成的三维点云的原理是这样:

的在这里,您可以在两种图形图像呈现方式之间进行选择。在默认模式下,图像将不加修改地显示。在 3d_plot 模式下,图像的灰度值将作为高度信息:灰度值越大,生成的图像点越高。参见图 6.16 对不同模式的说明。 更多信息可以在操作员的描述中找到 dev_set_paint 和 set_paint 。

也就是说他是根据灰度图来的...这样其实不是很准确...感觉没什么用。

输出控制窗口通过双击状态栏打开

后续操作过多都是要与实际例子相结合,所以我们再开一个专门来研究示例,然后里面出现了一些图像我们不会处理再回来

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值