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的時候總結出來的方法,如果有網友還知道其他更好的方法還請大家分享一下。如果有說的不對的地方還請大家指正。一起學習,共同進步!


分享到:


相關文章: