1. 程式人生 > >C#應用視頻教程3.3 Halcon+C#測試

C#應用視頻教程3.3 Halcon+C#測試

數組 es2017 更新 展示 不能 自己 bug alt 最新

接下來我們考慮把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#測試