1. 程式人生 > 其它 >Halcon小函式的封裝和修改

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#程式碼裡的方法就行了。