HALCON示例程序hull.hdev区域提取与凸度筛选
示例程序源码(加注释)
- 关于显示类函数解释
read_image (Hull, ‘hull’)
get_image_size (Hull, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, ‘black’, WindowID)
dev_display (Hull) - 二值化
threshold (Hull, Dark, 0, 80) - 求取两个区域不相交部分
difference (Hull, Dark, Light) - 分割连通域
connection (Light, ConnectedRegions) - 使用面积筛选区域
select_shape (ConnectedRegions, NoHullCand, ‘area’, ‘and’, 50000, 9999999) - 使用圆形元素进行闭运算
closing_circle (NoHullCand, NoHull, 13.5) - 求取区域不相交部分
difference (Hull, NoHull, Region) - 使用圆形元素进行开运算
opening_circle (Region, RegionOpening, 2.5) - 分割连通域
connection (RegionOpening, ConnectedRegions)
select_shape (ConnectedRegions, RegionHull, ‘area’, ‘and’, 5000, 9999999) - 转换区域形状
shape_trans (RegionHull, ConvexHull, ‘convex’)
difference (ConvexHull, RegionHull, Region)
connection (Region, ConnectedRegions)
select_shape (ConnectedRegions, LargeHoles, ‘area’, ‘and’, 2000, 99999) - 根据凸度筛选区域
select_shape (LargeHoles, Holes, ‘convexity’, ‘and’, 0, 0.85)
dev_display (Hull)
dev_set_line_width (5)
dev_set_draw (‘margin’)
dev_set_color (‘red’)
dev_display (Holes)
处理思路
这个例子是主要讲解了select_shape 使用’convexity’凸度,shape_trans 对区域进行形状变换。
后记
大家有什么问题可以向我提问哈,我看到了第一时间回复,希望在学习的路上多多结交良师益友。