• halcon学习和实践(hdev脚本学习技巧)


    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

            上一节我们提到了第一个halcon的脚本,也就是threshold.hdev。有过编码经验的同学看到这段代码,可能不会感到学习上有什么难度。但是对于一些plc开发的同学来说,特别是熟悉梯形图开发的朋友来说,学习上或许还是有一定的困难的。所以,这里提供一个hdev脚本的技巧。

            首先,还是重新看一下这个脚本,

    1. read_image (Audi2, 'audi2')
    2. fill_interlace (Audi2, ImageFilled, 'odd')
    3. threshold (ImageFilled, Region, 0, 90)
    4. connection (Region, ConnectedRegions)
    5. select_shape (ConnectedRegions, SelectedRegions, 'width', 'and', 30, 70)
    6. select_shape (SelectedRegions, Letters, 'height', 'and', 60, 110)
    7. dev_clear_window ()
    8. dev_set_colored (12)
    9. dev_display (ImageFilled)
    10. dev_display (Letters)

            我们知道每一个算子都有它的输入和输出,所以,这里可以先确定一个模型,

              从上面的算子来说,每一个算子都有一个或者若干个输入,但是输出一般只有一个。对于function1来说,它的输入就是input1,它的输出是output1。对于function2呢,function1的output1就是它的input1,它自己的输出就是output2,这里output1只是input2的一部分,可能function2还有其他输入。function3也是这样,依次类推。

            回到上面的脚本代码,第一行代码

    read_image (Audi2, 'audi2')

            很明显,输入是图片名称'audi2',输出是图片数据Audi2。

            紧接着分析第二行代码,

    fill_interlace (Audi2, ImageFilled, 'odd')

            这里我们看到第一行的输出Audi2,当然也多了一个输入'odd',输出为ImageFilled。

            继续分析第三行代码,

    threshold (ImageFilled, Region, 0, 90)

            经过观察发现,第二行的输出ImageFilled变成了这里的输入,除此之外,多了两个输入,一个是0,一个是90,输出是Region。

            第四行到第六行代码,大家可以自己去分析。

            接着分析第七行代码,

    dev_clear_window ()

            这里既没有看到输入,也没有看到输出,因此可以看成是全局设定。

              分析第八行代码,

    dev_set_colored (12)

            这里只有一个12输入,同样没有输出,所以可以看成是全局设定。

            继续分析第九行、第十行代码,

    1. dev_display (ImageFilled)
    2. dev_display (Letters)

            上面两行代码只有输入,没有输出。进一步查找发现,ImageFilled是第二行的输出结果,Letters是第六行输出结果。所以,这里也可以近似看成是全局设定,主要是为了显示处理后的图像结果。因为不涉及到图像的继续处理,所以也就没有输出。当然如果说有输出的话,那么输出的对象就是窗口屏幕,这也就是讲得通的。

            所以,不管hdev脚本多么复杂,基本都是参考上面的逻辑来执行的。只要掌握了上面给出的模型,掌握hdev脚本不会很复杂的。

  • 相关阅读:
    【网络数据采集】python爬取豆瓣top250电影目录
    vue中跨域 和 axios的封装
    WebDriver的工作原理及常用方法大全
    Java 正则表达式、方法、stream、file、IO、Scanner类
    《计算机操作系统-第一章》之操作系统概述
    Day59|leetcode 503.下一个更大元素II、42. 接雨水
    JAVA:实现GCD最大公约数算法(附完整源码)
    漏洞复现--中远麒麟堡垒机SQL注入
    【算法每日一练]-图论(保姆级教程 篇5(LCA,最短路,分层图)) #LCA #最短路计数 #社交网络 #飞行路线 # 第二短路
    两个char型数据有效位不超过四位分别赋给高地址和低地址
  • 原文地址:https://blog.csdn.net/feixiaoxing/article/details/126516857