Halcon机器视觉学习笔记(三)labview调用halcon的两种方法

在halcon中写好了视觉的程序之后它不能直接生成labview所执行的代码,那使用labview要怎么调用它呢?我在网上找了很多资料,看到labview调用halcon的方法主要有两种:一种是直接调用halcon的hdevenginedoonet.dll,通过hdev程序引擎来执行我们编写的halcon程序(文件后缀hdev);还有一种通过halcondonet.dll找到我们算子的构造类,在labview上编程视觉程序。

首先我们来做一个简单的halcon读取图片的例子,我们使用halcon来读取logo。

Halcon机器视觉学习笔记(三)labview调用halcon的两种方法

halcon读取logo

这是一个简单的halcon程序,其效果就是读取头条的logo标志,以上是在halcon中的读取效果。

一、labview通过调用hdev引擎来执行这个halcon程序的程序要怎么写呢?下面我们来看看labview上调用代码。

Halcon机器视觉学习笔记(三)labview调用halcon的两种方法

labviewd代码


Halcon机器视觉学习笔记(三)labview调用halcon的两种方法

程序执行效果


从上面的代码我们一步一步的看一下,labview是怎么调用执行的。

首先,我们要加载HWindowControl,halcon的图像显示控件。

使用.net容器放在前面板上,在.net容器选择插入控件

Halcon机器视觉学习笔记(三)labview调用halcon的两种方法

在弹出来的选择窗口点击浏览,找到halcon的安装目录C:\Program Files\MVTec\HALCON-12.0\bin\dotnet35 下找到的halcondonet.dll

安装目录根据不同的安装位置自己找,不一定就是和我这个的位置一样。

Halcon机器视觉学习笔记(三)labview调用halcon的两种方法

找到对应的文件

找到之后点击确定。

Halcon机器视觉学习笔记(三)labview调用halcon的两种方法

选择HWindowControl,点击确定完成插入图像显示窗口步骤,效果如下。

Halcon机器视觉学习笔记(三)labview调用halcon的两种方法

HWindowControl控件


这是图像显示窗口的配置,接下来我们来看看hdev引擎的配置。

在程序框图里找到.NET构造器节点

Halcon机器视觉学习笔记(三)labview调用halcon的两种方法

.NET构造器节点

同样的在安装目录下C:\Program Files\MVTec\HALCON-12.0\bin\dotnet35 下找到hdevenginedotnet.dll

Halcon机器视觉学习笔记(三)labview调用halcon的两种方法

选择hdevenginedotnet.dll HDevProgram


选择构造器HDevProgram(string fileName)

这个字符串就是我们halcon的程序路径,也就是说我们在labview中将路劲转换为字符串之后,输入到这个构造器里就能够执行我们在halcon里编写好的程序了。

Halcon机器视觉学习笔记(三)labview调用halcon的两种方法


加载halcon程序之后,在方法里选择excute执行我们的halcon程序,调用方法节点获取图像GetConicVarImage(string name),这里的字符串要对应我们在halcon里面的变量类型和变量名称,如果没有找到对应的变量程序就会报错。我们可以翻看我们halcon里面的图像变量名称为logo,所以我这里就写logo。

Halcon机器视觉学习笔记(三)labview调用halcon的两种方法

然后我们再将image的引用抛给上面的HWindowControl属性里,这样就能将图像显示在HWindowControl图像显示控件里了。

我们在研究一下labview上的程序框图

Halcon机器视觉学习笔记(三)labview调用halcon的两种方法


主要的流程:1加载程序路径;2、调用执行halcon程序;3、获取变量值。以上就是labview通过调用halcon程序的引擎来执行halcon的hdev程序。这种方法比较方便我们将halcon和labview编程结合在一起,节省我们的编程周期。

二、通过查找halcon的构造类来执行相应的算子,达到我们halcon的编程效果。这种方法会比较繁琐,对使用labview编程的人员来说需要有比较深的编程意识和C#面对对象编程的指示

还是一样,我们先来看看使用halcon构造类编程的labview代码和实现的效果

Halcon机器视觉学习笔记(三)labview调用halcon的两种方法

labview代码


Halcon机器视觉学习笔记(三)labview调用halcon的两种方法

实现效果


对于HWindowcontrol控件来说都是一样的,唯一的不同是获取图像image的引用不一样。利用hdev引擎的时候是通过调用halcon程序,然后再获取程序执行之后的变量,通过变量赋值HWindowcontrol。

使用构造类的话,我们就要获取read_image方法,它返回的image类型赋值给HWindowcontrol就能得到一样的效果。

首先我们通过查找halcon的帮助文档,看一下要实现这个算子。

Halcon机器视觉学习笔记(三)labview调用halcon的两种方法

在halcon里点击算子按F1查看帮助文档


在帮助文档上我们看到了如何去调用这类。

然后再labview上选择.NET构造器节点

Halcon机器视觉学习笔记(三)labview调用halcon的两种方法


还是找到C:\Program Files\MVTec\HALCON-12.0\bin\dotnet35 下找到的halcondonet.dll

找到HImage对象

Halcon机器视觉学习笔记(三)labview调用halcon的两种方法

在找到readimage(string filename)方法,然后将引用抛给HWindowcontrol这样就能够使我们选择的图片的路径能够显示在HWindowcontrol,同理,要想完全执行halcon上的程序,我们需要一个算子一个算子的去查找帮助文档,找到它的方法,对于复杂的程序来说,这个工作量是非常大的。

Halcon机器视觉学习笔记(三)labview调用halcon的两种方法

这是我自己在学习halcon的时候总结出来的方法,如果有网友还知道其他更好的方法还请大家分享一下。如果有说的不对的地方还请大家指正。一起学习,共同进步!


分享到:


相關文章: