標籤:更新 img 版本 index.php 安裝 位置 科學研究 執行流程 c#
Halcon是影像處理比較牛逼的一個軟體(德國人的東西,做的非常強大,裡面整合的演算法很多,可能你一輩子研究這個也做不過他),然而牛逼歸牛逼,康耐視,基恩士也很牛逼,但是日本人的東西一般太過封閉,屌絲用不起,也用不上,用上了也很難自己DIY(我們研究Halcon因為他只是一個PC平台的影像處理庫,不管你用C#還是C++,QT,JAVA都可以自己開發上位的程式,自己搭配相機做項目,而不是被各種硬體和軟體的限制)。
http://www.mvtec.com/products/halcon
?
講到Halcon,就不得不講到OpenCV,在C#中也有對應的類庫叫做EmguCV,很多人下載,安裝,然後就沒有然後了。相比於Halcon,OpenCV的難度很大(個人感覺僅僅適合做研究使用,雖然他是開源的,免費的),如果要快速的測試專案,還是要用商業的成熟的東西(你對比一下上下的兩個網站,明顯鞥呢感覺到一個是產品,一個是科學研究的半成品)
http://www.emgu.com/wiki/index.php/Main_Page
?
安裝過程就不介紹了,可以看我附件提供的(也可以自己百度,可能有更新的版本),安裝完成之後開啟軟體,然後可以直接開啟一個映像擷取視窗,定位到某個有圖片的檔案夾
?
點擊插入代碼,可以在程式編輯器中看到自動產生的程式碼
?
Halcon非常強大,我們記住幾個基本的快速鍵(可以測試不斷的按F6,看不斷的執行read_image的效果,雙擊這個read_image還會自動定位到運算元視窗,你可以修改這個函數的參數)
F2:程式重設
F5:程式運行
F6:單步運行
?
我們採集完了靜態檔案夾的圖片,現在來嘗試一下直接採集視頻裝置,切換成映像擷取介面,點擊檢測(自動顯示成DirectShow),然後切換到串連頁面,點擊串連-採集
?
點擊即時就可以採集到即時的映像,切換到代碼產生即可向上面一樣得到播放視頻的代碼(F5可以連續運行不斷擷取相機的映像)
?
因為時間有限,我們直接研究本節的重點,特徵匹配(就是找東西),開啟常式的視窗,在裡面輸入關鍵字,比如match,就會自動顯示所有相關的範例,直接開啟這個best_match_rot_mg_clip1.hdev
?
仔細研究這個程式,雖然有幾十行,但是其實代碼都是像指令碼語言的樣子,非常容易理解,一般是直接先F5看整體的運行效果,可以發現他就是把圖片中所有的回形針找出來(所謂的找出來就是找到特徵的中心點,顯示XY座標和旋轉角,畫一個綠色的箭頭表示找到了)
?
我們再來看一下他的執行流程(F2先重設,然後F6逐步執行到所示的位置),注意create_template_rot方法從字面的意思就是建立一個模板(你要在映像中找到所有的長得很像的,就先要設定一個基準模板),執行到這一步的時候可以看到左下角的變數視窗的TemplateID已經產生了,而後面找到的元素的XY座標和旋轉角等等還都是問號(問號表示還沒有值)
?
然後定位到這個best_math_rot_mg的函數,雙擊可以看到他的輸入輸出(雖然是一條命令,但是後面的參數已經包括了輸入和輸出),可以簡單理解為就是前面建立了一個模板,這裡只要拿著模板就可以到指定映像地區中找結果,找到的結果返回包括X,Y,angle,Error四個參數
?
剛才直接F5的時候不容易看清楚,這裡單步F6就可以看到找到每個回形針的時候的結果參數的變化了(這個範例其他的代碼部分包括了對映像的處理,像threshold,connection,reduce_domain,我們暫時先不管他,只要基本理解Halcon的影像處理完整流程即可)
?
如果要接著深入探討,可以看他的下一個範例,如果設定回形針的地區為其他部位(如果專業做影像處理的人肯定需要掌握這些技巧,因為每一個具體項目要處理的映像是不一樣的,你需要瞭解不同的映像最適合用哪些方法的組合完成最高效,最精準的匹配,每次需求也不一樣,可能這次是抓回形針的中間,下次是頭部,再下次只找最匹配的前面三個)
?
我們如何自訂特徵?肯定要自訂繪製矩形,而不是給我們自己設定的矩形視窗。Halcon為我們提供了兩種繪製矩形的方法,draw_rectangle1和draw_rectangle2,我們可以直接在運算元視窗中輸入部分代碼,然後讓他自動補全,完成之後注意參數對的上即可(不管是否帶方向,只是輸入的參數不同而已,最後對應的gen_rectangle1和gen_rectangle2都能把具體參數拿到然後產生Rectangle這個東西,後面的步驟就都一樣了)
?
測試一下不帶方向的繪製矩形的方法(滑鼠左鍵拖出一個紅色框,右鍵結束繪製,不管你按F6單步還是F5連續,執行到這一步就必須要畫完才會接著執行,隨後這個映像不管如何旋轉都能找到我們設定的模板的XY和方向)
?
測試一下帶方向的矩形框(也是滑鼠左鍵框,滑鼠放到藍色十字架上設定原點,然後放到紅色的寬度和高度上可以設定矩形的大小,放到綠色箭頭上可以設定初始的方向,其他動作跟上面的一樣)
?
?
更多教學視頻和資料下載,歡迎關注以下資訊:
我的優酷空間:
http://i.youku.com/acetaohai123
?
我的線上論壇:
http://csrobot.gz01.bdysite.com/
?
問題交流:
QQ:910358960
郵箱:[email protected]
?
?
?
?
C#應用視頻教程3.2 Halcon軟體測試