文本二值化

3
我想对这张图片进行二值化处理,以便与tesseract-ocr一起使用。目前,我已经得到了如下的结果: http://imgur.com/bU0FSt8 但我需要一个只包含文本而没有黑色背景部分的清晰图像,就像这张图片一样: imgur.com/KXQNErM 我的当前代码:
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更熟悉一些,那么我可以给出一个更具体的答案。 - Mark Ransom
谢谢您的建议,但是它并没有帮助我,或者我做错了什么... - Khazad
你的意思是不打算在任何地方使用GaussianBlur的结果吗?你正在对原始的img执行adaptiveThreashold,而不是模糊的blur - roippi
дҪ еҸҜд»ҘдҪҝз”Ёcv2.THRESH_BINARY_INVд»Јжӣҝcv2.THRESH_BINARYжқҘиҺ·еҸ–йҳҲеҖјзҡ„еҸҚиҪ¬з»“жһңгҖӮ - Eliezer Bernart
1个回答

4
一个常规的阈值可以呈现出良好的结果:

Result

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()

将其保存为tiff格式并通过命令行传递给Tesseract。请告诉我们检测的结果如何。 - karlphillip
1
非常好!抱歉回复晚了,我几天没有电脑可用。谢谢! - Khazad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接