Halcon小函數的封裝和代碼導出

 

1、Halcon小函數的封裝和修改算法

 

1、名詞解釋:函數

 

算子:指Halcon中最基礎、最底層的函數(即你看不到它的代碼實現),一個算子只有一句話,例如threshold算子。spa

 

小函數:由多個算子組合成的函數,我習慣稱爲小函數。其特色是,能夠經過鼠標右鍵單擊「顯示函數」打開。以下圖:3d

 

一般,Halcon代碼程序窗口中,算子和小函數的代碼顏色是有差別的。blog

 

 

2、小函數封裝ip

下面的算法實現的是獲得二維碼的面積和中心點座標字符串

 

read_image (Image, 'printer_chip/printer_chip_01')io

threshold (Image, Region, 128, 255)基礎

fill_up (Region, RegionFillUp)select

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等都屬於圖標參數。

控制參數:通常數據、字符串都屬於控制參數。

 

 

④ 點擊「肯定」:

 

 

 

2、Halcon小函數的導出

 

咱們能夠直接導出代碼,看這個小函數是什麼玩意兒:

 

執行「文件——導出」,彈出頁面參數設置以下:

 

 

導出的代碼其餘地方都不看,咱們只關心這個小函數(方法),若是這個小函數的Halcon代碼有變化,從新導出之後,將該方法替換掉C#代碼裏的方法就好了。

 

相關文章
相關標籤/搜索