HALCON示例程序color_segmentation_pizza.hdev披薩肉餅識別。
示例程序源碼(加注釋)
- 關于顯示類函數解釋
dev_update_off ()
dev_close_window ()
read_image (Image, ‘color/pizza_01’)
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width / 2, Height / 2, ‘black’, WindowHandle)
set_display_font (WindowHandle, 16, ‘mono’, ‘true’, ‘false’)
dev_set_part (0, 0, Height - 1, Width - 1)
for I := 1 to 3 by 1
read_image (Image, ‘color/pizza_’ + I$’.2’)
decompose3 (Image, ImageR, ImageG, ImageB)- 將RGB圖像裝換到色度空間。trans_from_rgb介紹貼子
trans_from_rgb (ImageR, ImageG, ImageB, Image_L, Image_A, Image_B, ‘cielab’) - 分割出披薩的區域
threshold (Image_B, PizzaRaw, 148, 255)
connection (PizzaRaw, ConnectedRegions1)
select_shape_std (ConnectedRegions1, Pizza, ‘max_area’, 0) - 提取最外邊的邊界
shape_trans (Pizza, PizzaFilled, ‘convex’)
reduce_domain (Image_B, PizzaFilled, ImageReduced) - 提取肉餅區域
threshold (ImageReduced, Region, 140, 146)
connection (Region, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, ‘area’, ‘and’, 30000, 1000000) - 先使用半徑小的圓形元素進行閉運算,再使用半徑大的圓形元素進行開運算。
closing_circle (SelectedRegions, RegionClosing, 20.5)
opening_circle (RegionClosing, RegionOpening, 85.5) - 顯示結果
dev_set_line_width (3)
dev_display (Image)
dev_set_color (‘green’)
dev_set_draw (‘margin’)
dev_display (RegionOpening)
if (I < 3)
disp_continue_message (WindowHandle, ‘black’, ‘true’)
stop ()
endif
endfor
- 將RGB圖像裝換到色度空間。trans_from_rgb介紹貼子
處理思路
這個例子將RGB圖像轉化到色度空間直接消除了披薩餅上餡料對識別的影響。
后記
大家有什么問題可以向我提問哈,我看到了第一時間回復,希望在學習的路上多多結交良師益友。