1. 程式人生 > 其它 >29.2、形態學---綜合例項2

29.2、形態學---綜合例項2

目標要求:通過形態學相關操作,求出右邊4個IC引腳的個數。

 

程式:

 

 

 

*讀入影象,並把它轉換為灰度圖

read_image (Image000513532, 'F:/Halcon學習/7、測試圖片/000513532.jpg')

rgb1_to_gray (Image000513532, GrayImage)

*設定ROI減少影象處理篇幅

gen_rectangle1 (ROI_0, 36.4579, 780.639, 565.239, 1020.27)

reduce_domain (GrayImage, ROI_0, ImageReduced)

*閾值分割

threshold (ImageReduced, Regions, 0, 83)

 

*連通性分析,並進行填補空洞

connection (Regions, ConnectedRegions)

fill_up (ConnectedRegions, RegionFillUp)

 

*開運算

opening_circle (RegionFillUp, RegionOpening, 3)

*連通性,面積篩選

connection (RegionOpening, ConnectedRegions1)

select_shape (ConnectedRegions1, SelectedRegions, 'area', 'and', 4159.99, 6167)

 

*最小外接矩形,並創建出來

smallest_rectangle1 (SelectedRegions, Row1, Column1, Row2, Column2)

gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)

 

*排序並計算中心點,便於下面列印字型到影象上

sort_region (Rectangle, Rectangle, 'first_point', 'true', 'column')

area_center (Rectangle, Area, Row, Column)

 

*膨脹,膨脹後結果與沒膨脹前做差集,獲取得引腳部分割槽域

dilation_rectangle1 (Rectangle, RegionDilation, 16, 1)

difference (RegionDilation, Rectangle, RegionDifference)

*把引腳從影象中分割出來

add_channels (RegionDifference, GrayImage, GrayRegions)

*計算有多少個ic

count_obj (GrayRegions, Number)

 

dev_clear_window ()

dev_display (Image000513532)

dev_update_window ('off')

 

*迴圈遍歷每個ic引腳部分割槽域

for Index := 1 to Number by 1

*獲得引腳部分影象,並閾值分割

select_obj (GrayRegions, ObjectSelected, Index)

threshold (ObjectSelected, Regions1, 112, 255)

 

*開運算把引腳粘連部分分開,-----選取矩形寬度高度分別為5,1因為寬度方向要去除更多,才能分開粘連部分

opening_rectangle1 (Regions1, RegionOpening1, 5, 1)

*連通性分析

connection (RegionOpening1, ConnectedRegions2)

dev_display (ConnectedRegions2)

*計算引腳個數

count_obj (ConnectedRegions2, Number1)

*列印個數到影象上

disp_message (3600, Number1, 'image', Row[Index-1]-10, Column[Index-1]-10, 'yellow', 'false')

 

endfor

 

 

 

最終效果: