方法1:opening_rectangle1 (Solid, Cut, 1, 7),使用该方法进行分割,1是宽度,7是高度。Halcon范例bottle.hdev: Segment and read numbers on a beer bottle
方法2:使用partition_rectangle或partition_dynamic进行等间隔的字符分割,要求字符的间隔尽量保持一致
partition_dynamic(Region: Partitioned: Distance, Percent : ) 函数作用:
在水平位置上以参数Distance的宽度分割区域,分割得到的位置是相对小的垂直部分。分割原理如下:
1、初始的分割位置是在水平方向上平均分配,也就是结果部分拥有相同的宽度。
2、分割后的块数N是由参数Distance决定的,而Distance是由输入区域的宽度除以N决定的。
3、分割后的等份区域进一步还计算区域间的最小垂直程度Percent,最后分割的位置与初始的最大浮动差是Distance*Percent*0.01
注:
参数列表:
Region(in):输入的被分割区域
Partitioned(out):分割的区域
Distance(in):分割区域的大概宽度
Percent(in):分割位置的最大分数偏移
可能前置项
threshold, connection
可能替代项
partition_rectangle
方法3:滴水分割算法,该算法还没有研究
将这个字符进行分割开的代码思路
read_image (Image5, 'C:/Users/yuexinzheng/Desktop/5.png')
threshold (Image5, Region1, 0, 123)
fill_up (Region1, RegionFillUp1)
closing_circle (RegionFillUp1, RegionClosing, 5.5)
closing_rectangle1 (RegionClosing, RegionClosing1, 10, 19)
fill_up (RegionClosing1, RegionFillUp2)
*主要是利用opening_rectangle1()函数,将图像部分进行膨胀,使接线明显且加大
opening_rectangle1 (RegionFillUp2, RegionOpening1, 2, 44)
*取分割开的图与原Region的重叠区域
intersection (Region1, RegionOpening1, RegionIntersection1)
方法2的代码实现
read_image (Image5, 'C:/Users/yuexinzheng/Desktop/5.png')
char_threshold (Image5,Image5 , Characters, 2, 95, Threshold)
smallest_rectangle1 (Characters, Row1, Column1, Row2, Column2)
region_features (Characters, 'width', Value)
partition_dynamic (Characters, Partitioned, Value/2, 90)
分割效果图