【发布时间】:2018-05-17 13:17:16
【问题描述】:
我是 Python 和 OpenCV 的新手。我目前正在使用 Python 和 OpenCV 不使用 Tesseract 进行 OCR。到目前为止,我已经成功地检测到文本(字符和数字),但是在检测单词之间的空格时遇到了问题。 例如- 如果图像显示“Hello John”,那么它会检测到 hello john 但无法检测到它们之间的空间,所以我的输出是“HelloJohn”,它们之间没有任何空间。我提取轮廓的代码如下(我已经导入了所有需要的模块,这个是提取轮廓的主要模块):
imgGray = cv2.cvtColor(imgTrainingNumbers, cv2.COLOR_BGR2GRAY)
imgBlurred = cv2.GaussianBlur(imgGray, (5,5), 0)
imgThresh = cv2.adaptiveThreshold(imgBlurred,
255,
cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY_INV,
11,
2)
cv2.imshow("imgThresh", imgThresh)
imgThreshCopy = imgThresh.copy()
imgContours, npaContours, npaHierarchy = cv2.findContours(imgThreshCopy,
cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)
在此之后,我将提取的轮廓分类为数字和字符。 请帮我检测它们之间的空间。 提前感谢您,您的回复将非常有帮助。
【问题讨论】:
-
这样你就有了带有字母的二进制图像。一种方法是使用dilation 增加字母,直到附近的字符合并,但单独的单词不会。然后,每个单词都有单独的 blob。这些斑点的轮廓每个都是单个单词的掩码,您可以使用每个斑点单独掩盖原始图像,只需对单独的单词进行 OCR。
标签: python-2.7 opencv