標籤:tao 3.3 運行 設定 視頻教程 類庫 關閉 建立 採集
接下來我們考慮把Halcon的代碼移植到C#程式上,首先找到halcon的dll(.NET類庫有1.0,2.0,3.5的,如果你安裝了更新版本的halcon則有更新的.NET類庫,我們複製最新的dll到自己建立C#程式的Debug目錄下)
?
直接把這個DLL拖放到工具箱上,然後可以出現一個HWindowControl的控制項(跟上一節OPENGL很像)
?
把你的C#程式目標平台改成對應的電腦系統版本,同時目標框架4(個人經驗,如果改成.NET Framework 3.5或者4.5都會有問題),可以直接F5運行一下看又沒有報錯
?
執行Halcon的代碼匯出,先來看最簡單的代碼匯出,開啟官方的範例clip,然後匯出為C#的程式(保持所有設定如下)
?
在前面做好的C#程式中定義一個新的類,然後直接複製粘貼所有代碼(頂部添加引用HalconDotNet,然後把class XXX刪掉直接複製這個HDevelopExport)
?
在主程式中直接表單載入的時候寫下面兩句話,產生類的執行個體,然後執行執行個體的RunHalcon方法(不管你的Halcon程式多麼複雜,在匯出為C#類的時候都只有很少的幾個方法)
?
如果不能運行則注釋掉報錯的代碼(比如disp_continue_message,就是類似於顯示一個文字,箭頭這種方法可能還不支援),這些不影響使用
?
可以發現整個程式已經可以運行了(雖然還不能像Halcon那樣把所有採集到的變數放到數組中,這些我們後面再考慮)
?
那麼能不能做的簡單一點呢?我們如果只是希望展示一副圖片,或者開啟相機採集介面,首先還是用Halcon產生三種圖片的擷取方法(都可以用Image Acquistion方法自動產生代碼)
?
將產生的C#程式做一下重新編排,Action裡面只放第一段的代碼
?
再把第二段的代碼重新建立一個方法,並且放進去(跟前面的方法很類似)
?
測試發現都是可以正常啟動並執行,由此我們就可以自己擴充Halcon匯出的類了
?
那麼如何支援相機的映像呢?跟官方匯出的代碼不同,我們這裡需要注意while死迴圈中一方面採集,一方面就要顯示(DispObj方法),此外由於是死迴圈,所以需要放到額外的線程中執行,否則介面會卡死
?
有相機的開啟,就要有對應的關閉方法,最方便的做法還是做一個全域的布爾值,如果是false,則不執行抓取映像和顯示映像的操作(讀這樣可以測試使用官方的CloseFramegarbber方法跟前面開啟對應,實際上還是會有很多問題,表單會卡死)
?
已經可以正常採集到相機的映像了(注意開啟瀏覽靜態映像之前先關閉掉相機採集映像,此外這裡使用的還是絕對的檔案路徑,所以如果你的項目不在案頭上,第二幅圖片可能打不開)
?
?
更多教學視頻和資料下載,歡迎關注以下資訊:
我的優酷空間:
http://i.youku.com/acetaohai123
?
我的線上論壇:
http://csrobot.gz01.bdysite.com/
?
問題交流:
QQ:910358960
郵箱:[email protected]
?
?
?
C#應用視頻教程3.3 Halcon+C#測試