halcon学习和实践(hdev脚本学习技巧)
Posted 嵌入式-老费
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了halcon学习和实践(hdev脚本学习技巧)相关的知识,希望对你有一定的参考价值。
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
上一节我们提到了第一个halcon的脚本,也就是threshold.hdev。有过编码经验的同学看到这段代码,可能不会感到学习上有什么难度。但是对于一些plc开发的同学来说,特别是熟悉梯形图开发的朋友来说,学习上或许还是有一定的困难的。所以,这里提供一个hdev脚本的技巧。
首先,还是重新看一下这个脚本,
read_image (Audi2, 'audi2')
fill_interlace (Audi2, ImageFilled, 'odd')
threshold (ImageFilled, Region, 0, 90)
connection (Region, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'width', 'and', 30, 70)
select_shape (SelectedRegions, Letters, 'height', 'and', 60, 110)
dev_clear_window ()
dev_set_colored (12)
dev_display (ImageFilled)
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输入,同样没有输出,所以可以看成是全局设定。
继续分析第九行、第十行代码,
dev_display (ImageFilled)
dev_display (Letters)
上面两行代码只有输入,没有输出。进一步查找发现,ImageFilled是第二行的输出结果,Letters是第六行输出结果。所以,这里也可以近似看成是全局设定,主要是为了显示处理后的图像结果。因为不涉及到图像的继续处理,所以也就没有输出。当然如果说有输出的话,那么输出的对象就是窗口屏幕,这也就是讲得通的。
所以,不管hdev脚本多么复杂,基本都是参考上面的逻辑来执行的。只要掌握了上面给出的模型,掌握hdev脚本不会很复杂的。
以上是关于halcon学习和实践(hdev脚本学习技巧)的主要内容,如果未能解决你的问题,请参考以下文章