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脚本学习技巧)的主要内容,如果未能解决你的问题,请参考以下文章

halcon学习和实践(svm模型训练实战)

halcon学习和实践(ocr识别)

halcon学习和实践(导出cpp文件)

如何在vc++中调用halcon的hdev档案

halcon学习和实践(从halcon转化为opencv)

halcon学习和实践(开篇)