我有一组代表一系列字符的图像。我想知道OpenCV或其他技术是否可以分割和裁剪图像中的每个字符。例如:
我有作为输入的
我想得到:
is 5
is 0
is 4
is 1
is 9
is 2
发布于 2017-04-21 17:25:34
在这里,从输入到输出有两个问题:
第一个是分离你的角色。如果你的图像总是像这样,数字被整齐地分开,那么你应该可以使用findContours
或connectedComponents
,也许再加上一个像minAreaRect
这样的边界框函数来分离它们。
第二个问题是,一旦你分离了你的数字,如何辨别图像代表的是哪个数字。这个问题有一个名字:OCR。
如果你有很多图像,也可以训练一个分类算法,就像你对这个问题的标记所暗示的那样。现在的“热门话题”是使用神经网络进行深度学习,但对于简单的应用程序,具有手动设计特征的常规机器学习分类可能会起到作用。
发布于 2017-07-12 17:45:31
如果你想分割数字,我会首先尝试开始操作(因为你的字母在白色背景上是黑色的,如果它相反,它将是关闭的),以填补你在数字中的空洞。然后我会垂直投影像素并分析你得到的形状。如果你找到这个投影形状中的谷点,你就会得到字符之间的垂直限制。您可以在水平方向上执行相同的操作,以获得字符的上限和下限。仅当文本为水平文本时,此方法才有效。
然后,您可以使用标准的OCR库或进行深度学习。由于这些数字似乎来自MNIST数据集,因此您将发现许多使用深度学习或其他技术对此数据集进行OCR示例:
http://yann.lecun.com/exdb/mnist/
https://stackoverflow.com/questions/43538464
复制相似问题