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图像转化到色度空间直接消除了披萨饼上馅料对识别的影响。
后记
大家有什么问题可以向我提问哈,我看到了第一时间回复,希望在学习的路上多多结交良师益友。