Canny边缘检测后如何填补字母的空白

时间:2018-11-26 18:19:45

标签: python computer-vision tesseract python-tesseract

我正在尝试使用Tesseract进行阿拉伯语OCR,但是除非字母用黑色填充,否则OCR不会起作用。 Canny边缘检测后如何填补空白?

这是示例图像和示例代码: enter image description here

listnum = [sum(x) for x in listnum]

结果: enter image description here

This is a sample image不能同时使用阈值和Canny。

1 个答案:

答案 0 :(得分:1)

在这种情况下,因为文本是黑色的,所以最好简单地找到所有黑色像素。

使用NumPy完成此操作的一种非常简单的方法如下:

import matplotlib.pyplot as pp
import numpy as np

image = pp.imread(r'/home/cris/tmp/Zuv3p.jpg')
bin = np.all(image<100, axis=2)

这是查找所有三个通道的值均低于100的所有像素。我随机选择了100种阈值,可能有更好的方法来选择阈值。 :)


注意:

1-使用彩色输入时,第一步转换为灰度图像通常是个坏主意。这会丢掉很多信息。有时候这是适当的,但在这种情况下最好不要这样做。

2-边缘检测确实很棒,但是通常是错误的方法。当需要查找边缘时,请使用边缘检测。当您不想要边缘时,请使用其他东西。


编辑:如果由于某种原因np.all抱怨数据类型(对我而言不是),您应该能够将其输入转换为正确的类型:

bin = np.all(np.array(image<100, dtype=np.bool), axis=2)

或者也许

bin = np.all(np.array(image<100, dtype=np.uint8), axis=2)