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