【发布时间】:2017-04-21 09:07:42
【问题描述】:
【问题讨论】:
标签: python opencv image-processing python-imaging-library conv-neural-network
【问题讨论】:
标签: python opencv image-processing python-imaging-library conv-neural-network
从输入到输出有两个问题:
首先是分离你的角色。如果您的图像总是这样,并且数字被整齐地分开,那么使用findContours 或connectedComponents 将它们分开应该没有问题,也许还有像minAreaRect 这样的边界框功能。
第二个问题是,一旦你分开了你的数字,如何分辨图像代表哪个数字。这个问题有一个名字:OCR.
如果您有很多图像,也可以训练分类算法,正如您对这个问题的标记所暗示的那样。现在的“热门话题”是使用神经网络进行深度学习,但对于简单的应用程序,具有手工设计特征的常规机器学习分类可能会奏效。
【讨论】:
如果您想分割数字,我会首先尝试使用打开操作(因为您的字母在白色背景上是黑色的,如果相反,它将关闭)以填补您的漏洞在你的数字中。然后我会垂直投影像素并分析你得到的形状。如果您在此投影形状中找到谷点,您将获得字符之间的垂直限制。你可以水平地做同样的事情来获得你的字符的上限和下限。这种方法只有在文本是水平的情况下才有效。
然后您可以使用标准 OCR 库或进行深度学习。由于这些数字似乎来自 MNIST 数据集,因此您会发现很多使用深度学习或其他技术对该数据集进行 OCR 的示例:
【讨论】: