使用openCV分段,裁剪(边界框)和标记字符

时间:2017-04-21 09:07:42

标签: python opencv image-processing python-imaging-library conv-neural-network

我有一组代表一系列字符的图像。我想知道OpenCV或其他技术是否可以从图像中分割和裁剪每个角色。例如:

我有输入

enter image description here

我想得到:

enter image description here是5

enter image description here为0

enter image description here是4

enter image description here是1

enter image description here是9

enter image description here是2

2 个答案:

答案 0 :(得分:2)

这里有两个问题,从输入到输出:

首先是分隔你的角色。如果你的图片看起来总是这样,数字整齐分离,那么你应该没有问题,使用findContoursconnectedComponents将它们分开,可能还有像minAreaRect这样的边界框函数。

第二个问题是,一旦你分开你的数字,如何分辨图像所代表的数字。此问题的名称为:OCR 如果您有很多图像,也可以训练分类算法,因为您对此问题的标记表明了这一点。现在的“热门话题”是使用神经网络深度学习,但对于简单的应用程序,使用手工设计功能的常规机器学习分类可能会起到作用。

答案 1 :(得分:1)

如果你想对数字进行分段,我会首先尝试使用开场操作(因为你的字母在白色背景上是黑色的,如果它是相反的话它会关闭)以填补你的洞在你的号码。然后我会垂直投影像素并分析你得到的形状。如果您在此投影形状中找到谷点,您将获得字符之间的垂直限制。您可以水平地执行相同操作以获取字符的上限和下限。只有在文本是水平的情况下,此方法才有效。

然后你可以使用标准的OCR库或深入学习。由于这些数字似乎来自MNIST数据集,因此您可以在此数据集中找到大量使用深度学习或其他技术进行OCR的示例:

http://yann.lecun.com/exdb/mnist/