【问题标题】:Text binarization文本二值化
【发布时间】:2014-10-03 19:31:28
【问题描述】:

我想将此图像二值化:

将它与 tesseract-ocr 一起使用。目前,我设法得到了这个:

但我需要只有文字的清晰图像,没有黑色背景部分,比如这个:

我当前的代码:

img = cv2.imread(path, 0)
blur = cv2.GaussianBlur(img, (3, 3), 0)
filtered = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 405, 1)
bitnot = cv2.bitwise_not(filtered)
cv2.imshow('image', bitnot)
cv2.imwrite("h2kcw2/out1.png", bitnot)
cv2.waitKey(0)
cv2.destroyAllWindows()

【问题讨论】:

  • 做两个阈值,一个获取字符,一个获取背景,然后将它们组合起来。如果我对 opencv 更熟悉,我会给出更具体的答案。
  • 感谢您的建议,但它没有帮助我,或者我做错了什么......
  • 你的意思是不使用GaussianBlur 结果吗?你在原来的img 上做adaptiveThreashold,而不是模糊的blur
  • 您可以使用cv2.THRESH_BINARY_INV 而不是cv2.THRESH_BINARY 来获得阈值的逆结果。

标签: python opencv tesseract


【解决方案1】:

常规阈值可以呈现良好的结果:

img = cv2.imread(path, 0)
ret, thresh = cv2.threshold(img, 70, 255, cv2.THRESH_BINARY_INV)
cv2.imshow('image', thresh)
cv2.imwrite("h2kcw2/out1.png", thresh)
cv2.waitKey(0)
cv2.destroyAllWindows()

【讨论】:

  • +1 将其保存为 tiff 并通过 cmd 行将其传递给 Tesseract。让我们知道检测是如何进行的。
  • 效果很好!抱歉,回答晚了,但我几天都无法使用计算机。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
  • 2012-04-13
  • 1970-01-01
  • 2017-09-25
  • 2015-04-08
  • 1970-01-01
相关资源
最近更新 更多