HALCON示例程序count_pellets.hdev分割豆子,基本形态学的使用
示例程序源码(加注释)
- 关于显示类函数解释
 dev_update_off ()
 read_image (Image, ‘pellets’)
 dev_close_window ()
 get_image_size (Image, Width, Height)
 dev_open_window (0, 0, Width, Height, ‘black’, WindowID)
 dev_set_part (0, 0, Height - 1, Width - 1)
 set_display_font (WindowID, 16, ‘mono’, ‘true’, ‘false’)
 dev_set_colored (6)
 dev_set_draw (‘margin’)
 dev_set_line_width (3)
 dev_display (Image)
 disp_message (WindowID, ‘Detect each single pellet’, ‘window’, 12, 12, ‘black’, ‘true’)
 disp_continue_message (WindowID, ‘black’, ‘true’)
 stop ()
- 之前介绍binary_threshold 算子的文章
 binary_threshold (Image, LightRegion, ‘max_separability’, ‘light’, UsedThreshold)
- 使用圆形元素进行开运算
 opening_circle (LightRegion, Region, 3.5)
 dev_display (Region)
 disp_message (WindowID, ‘First, segment the pellets’, ‘window’, 12, 12, ‘black’, ‘true’)
 disp_continue_message (WindowID, ‘black’, ‘true’)
 stop ()
- 筛选出直接分割连通域的错误演示,因为这个时候还有豆子黏连在一起。
 connection (Region, ConnectedRegionsWrong)
 dev_display (Image)
 dev_display (ConnectedRegionsWrong)
 disp_message (WindowID, ‘Simple connection fails’, ‘window’, 12, 12, ‘black’, ‘true’)
 disp_continue_message (WindowID, ‘black’, ‘true’)
 stop ()
- 使用圆形元素进行腐蚀运算
 erosion_circle (Region, RegionErosion, 7.5)
 dev_display (Image)
 dev_display (RegionErosion)
 disp_message (WindowID, ‘Erosion of the pellet regions’, ‘window’, 12, 12, ‘black’, ‘true’)
 disp_continue_message (WindowID, ‘black’, ‘true’)
 stop ()
- 现在进行连通域分割
 connection (RegionErosion, ConnectedRegions)
 dev_display (Image)
 dev_display (ConnectedRegions)
 disp_message (WindowID, ‘Perform connection now’, ‘window’, 12, 12, ‘black’, ‘true’)
 disp_continue_message (WindowID, ‘black’, ‘true’)
 stop ()
- 恢复豆子原本区域,使用圆形元素进行膨胀。
 dilation_circle (ConnectedRegions, RegionDilation, 7.5)
- 对区域进行计数
 count_obj (RegionDilation, Number)
 dev_display (Image)
 dev_display (RegionDilation)
 disp_message (WindowID, Number + ’ pellets detected’, ‘window’, 12, 12, ‘black’, ‘true’)
处理思路
这个例子是主要讲解了形态学在分割连通域当中的应用。dilation_circle 、erosion_circle 、opening_circle 。
后记
大家有什么问题可以向我提问哈,我看到了第一时间回复,希望在学习的路上多多结交良师益友。