Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv 如何对单个数字或多个数字进行分类_Opencv_Image Processing_Ocr_Image Segmentation_Digit - Fatal编程技术网

Opencv 如何对单个数字或多个数字进行分类

Opencv 如何对单个数字或多个数字进行分类,opencv,image-processing,ocr,image-segmentation,digit,Opencv,Image Processing,Ocr,Image Segmentation,Digit,我有一个包含数字的图像 有: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太近了 我的问题是,有没有另一种方法来分类那些是

我有一个包含数字的图像

有: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++

与此相比,模糊然后查找边界框的计算时间很长:

如果你能挑出这些数字中的每一个,那么你必须为每个数字至少有一个中心点。我将通过查找每个数字的宽度和高度以及旋转来进一步说明这一点。有了这些信息,我将应用一组规则,对应于如何读取数字

这些规则可以起作用:

  • 从一个等于位数的节点编号的空图形开始
  • 被测数字是否有任何其他数字相距小于一个宽度(或彼此中心点相距两个宽度)
  • 如果是,那么两个数字是否具有相同的旋转(+/-公差)
  • 如果是这样,那么旋转是否与两个数字的中心点之间的直线成90(+/-tol)度角
  • 使用两点的矢量差确定顺序
  • 在两个数字之间创建方向边
  • 检查另一侧是否有其他数字(快捷方式)
  • 重复下一个数字
  • 沿着图表走,找到你的一组数字
  • 考虑到这样的问题,我更愿意使用概率来排序一组可能的解决方案,这样您的程序就可以询问操作员,或者如果它陷入困境,就可以返回并选择下一个“最佳”解决方案


    希望这有帮助,我羡慕你的数字识别技能:)

    我建议你不要模糊图像。只需提取单个字符及其边界框。然后可以迭代地为它们的质心应用欧几里德距离阈值,一次合并一个边界框。然后,您可以将每个数字建模为一个链表,并通过简单的方向启发法不断添加到元素两侧的列表中。

    对于50的情况,您可以固定数字之间的距离,例如d。如果数字的距离大于d,则它们是不同的数字。就2340而言,我不认为这是23和40。我相信是2340。是的,固定距离可以在打印字符中实现。但对于用白纸写的手写字(没有行),我认为这相当困难,因为“太自由了”。我的意思是,对于手写,没有固定的距离像印刷文本。有时候,人类只是在写,不在乎数字的距离。这就是为什么我做了这些例子,50和2340,我想解决这些情况,“太远”和“太近”。这张图片只是一个例子。如果我错了,请纠正我。:)对我来说也是2340……你能先检测出所有的数字,然后使用与每个数字大小成比例的距离吗?@lulu你能快速解决这个问题吗?