11

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

 2 years ago
source link: https://blog.csdn.net/feixiaoxing/article/details/126516857
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

嵌入式-老费 已于 2022-08-25 08:20:58 修改 22

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

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

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

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

77d6506241e64fa98b90d635204358da.png

          从上面的算子来说,每一个算子都有一个或者若干个输入,但是输出一般只有一个。对于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输入,同样没有输出,所以可以看成是全局设定。

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

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK