Halcon小函式的封裝和修改
一、Halcon小函式的封裝和修改
1、名詞解釋:
運算元:指Halcon中最基礎、最底層的函式(即你看不到它的程式碼實現),一個運算元只有一句話,例如threshold運算元。
小函式:由多個運算元組合成的函式,我習慣稱為小函式。其特點是,可以通過滑鼠右鍵單擊“顯示函式”開啟。如下圖:
通常,Halcon程式碼程式視窗中,運算元和小函式的程式碼顏色是有差異的。
2、小函式封裝
下面的演算法實現的是得到二維碼的面積和中心點座標
read_image (Image, 'printer_chip/printer_chip_01')
threshold (Image, Region, 128, 255)
fill_up (Region, RegionFillUp)
connection (RegionFillUp, ConnectedRegions)
*找面積最大的一個,即二維碼區
dev_display (Image)
select_shape_std (ConnectedRegions, SelectedRegions, 'max_area', 70)
*得到面積和中心點座標
area_center (SelectedRegions, Area, Row, Column)
影象通常是外部傳入的,不適合囊括在小函式內,因此read_image這句不應該囊括在小函式中。
後面的程式碼傳入引數只有一個Image,得到的引數有很多,例如SelectedRegions、Area、Row、Column等。如果我們以Image為入參,以Area為出參,封裝過程如下:
① 選中需要封裝的全部程式碼,右鍵點選“建立新函式”:
② 在彈出的視窗中填寫函式名,如Get_CodeArea:
③ 然後點選上圖中“引數”,刪減引數,把不用的引數刪掉即可:
④ 點選“確定”生成小函式:
3、小函式修改
由於目的不同,有時候小函式需要增減傳入引數,或者增減傳出引數。即小函式需要修改。步驟如下:
① 點選下圖圖示:
② 選擇函式“Get_CodeArea”,然後可以修改函式名,或者引數:
③ 假如我們不需要二維碼面積,而需要它的中心點座標,因此可把函式名改成“Get_Point”,然後改引數如下(先把Area刪掉,然後在“控制引數”的輸出裡新增Row和Column):
圖示引數:一般Region、Image、XLD等都屬於圖示引數。
控制引數:一般資料、字串都屬於控制引數。
④ 點選“確定”:
二、Halcon小函式的匯出
我們可以直接匯出程式碼,看這個小函式是什麼玩意兒:
執行“檔案——匯出”,彈出頁面引數設定如下:
匯出的程式碼其他地方都不看,我們只關心這個小函式(方法),如果這個小函式的Halcon程式碼有變化,重新匯出以後,將該方法替換掉C#程式碼裡的方法就行了。