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

來源:互聯網
上載者:User

標籤: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#測試

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.