halcon学习和实践(hdev脚本学习技巧)-灵析社区

神机妙算

上一节我们提到了第一个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脚本不会很复杂的。

阅读量:773

点赞量:0

收藏量:0