我有一个包含数字的图像。
有:1,153,25,50,23和40
对于每一位数字,我对数字识别没有任何问题。我能认出有1,1,5,3,5,0,2,5,2,3,4,0。
现在,我想让他们成为1,153,25,50,23和40。
我的方法是,使图像变得模糊,因此数字的边界框与其他数字的边界框相遇。然后在多个边界框的巨大边界框内提取数字。
我的期望是这样的
但是,现实就像这样
1,153,25,5,0和2340
,因为
距离5和0太远
距离23和40太近
我的问题是,是否有另一种方法可以对那些是单数字还是多数字进行分类?如果有,怎么样? :) 非常感谢你:))
*抱歉我的英文不好
**我使用的是opencv c ++
答案 0 :(得分:2)
与此相比,模糊然后找到边界框的计算时间很长:
如果您可以选择每个数字,那么您必须至少为每个数字都有一个中心点。我会通过找到每个数字的宽度和高度以及旋转来进一步做到这一点。有了这些信息,我将应用一组与读取数字相对应的规则。
这些规则可行:
考虑到这样的问题,我宁愿使用概率来订购一组可能的解决方案,那么你的程序可以询问操作员,或者它是否会卡住,假设有一件事可以回去并选择下一个"最好的& #34;之一。
希望这有帮助,我羡慕你的数字识别技能:)
答案 1 :(得分:0)
我建议你不要模糊图像。只需提取单个字符及其边界框即可。然后,您可以迭代地为其质心应用欧氏距离阈值,将边界框合并在一起,一次一个。然后,您可以将每个数字建模为链接列表,并通过简单的方向启发式继续添加到元素两侧的列表中。