Halcon 初體驗

學習Halcon後,有種一切圖像都可做提取或識別的衝動。以識別門禁卡的例子作爲入門體驗實戰。

上Halcon 代碼

* Image Acquisition 01: Code generated by Image Acquisition 01

dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
open_framegrabber ('USB3Vision', 0, 0, 0, 0, 0, 0, 'progressive', -1, 'default', -1, 'false', 'default', '2BDF36305954_Hikvision_MVCA05020UC', 0, -1, AcqHandle)
grab_image_start (AcqHandle, -1)
while (true)    
    grab_image_async (Image, AcqHandle, -1)
    * 圖形通道分離
    decompose3 (Image, R, G, B)
    * 轉化爲H S V顏色模型
    trans_from_rgb(R, G, B, H, S, V, 'hsv')
    dev_display(S)   
    * 二值化
    threshold (S, Regions, 174, 255)
    dev_display(Regions)
    * 孔洞填充
    fill_up (Regions, RegionFillUp)
    dev_display (RegionFillUp)  
    
    * 連通區域,將一整塊區域劃爲爲若干小的區域
    connection (RegionFillUp, ConnectedRegions)
    area_center (ConnectedRegions, Area, Row, Column)    
    target:=max(Area)    
    
    * 特性選擇,按面積在一定區域內提取所需區域
    select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', target-100, target+100)
    dev_display(SelectedRegions)  
    
    * 顯示區域面積
    area_center (SelectedRegions, Area1, Row1, Column1)    
    disp_message (WindowHandle, '面積爲:'+ Area1, 'window', 10, 10, 'green', 'true')
 
endwhile
close_framegrabber (AcqHandle)

代碼內有註釋關鍵步驟含義,結合動圖的圖示應該可以體會到沒步驟後圖像的變化效果。

就這樣,一個門禁卡就被提取出來了

這類圖像 區域識別對應Halcon中的“Blob分析“ ,Halcon帶有大量的實例程序可以學習。結合具體的例子上手更快。一般手法或者說套路大致如下:

1:圖像預處理:常用手法比如:圖像轉灰增強(灰度變化:sub_image, invert_image,直方圖變化:equ_histo_image)、去噪濾波(均值濾波mean_image、中值濾波median_image、高斯濾波gauss_image)等;

2:二值化:threshold 分割圖形;

3:形態學處理:膨脹、腐蝕,開運算,閉運算;

4:區域連通:connection算子

5:特性分析 select_shape ,按長、寬,面積、圓度、矩形度等方面篩選;

技不壓身,記錄學習過程,生命不息,學習不止。完。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章