字符分割时对粘连字符的处理方法

方法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)

分割效果图

猜你喜欢

转载自blog.csdn.net/yue1453544229/article/details/89476130