从嘈杂的图像中提取数字

时间:2019-10-23 16:36:12

标签: python image opencv cv2 python-tesseract

从嘈杂的图像中提取数字

我想从手机摄像头拍摄的图像中提取文本。 首先,我尝试使用以下代码将图像转换为灰度:

imgg = Image.open('originale.jpg').convert('LA')

第二,我尝试使用此代码对灰色图像进行阈值处理,以获取仅具有黑白图像的图像::

 retval, threshold = cv2.threshold(grayscaled, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
cv2.imwrite("threshold.png", threshold)

第三,我尝试使用pytesseract提取文本,但是使用此代码我没有正确的结果。

result5 = pytesseract.image_to_string(Image.open("threshold.png"))

这是我要提取数字的图像,例如: 我的预期输出是:111 2 11 4 1 23 2 3

这是我的照片:

originale.jpg

threshold.png

这是我的完整代码:

import cv2
import numpy as np
import pytesseract
from PIL import Image
img = cv2.imread('originale.jpg')
grayscaled = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
retval, threshold = cv2.threshold(grayscaled, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
cv2.imwrite("threshold.png", threshold)
result = pytesseract.image_to_string(Image.open("threshold.png"))
print(result)

1 个答案:

答案 0 :(得分:0)

您可以使用Otsu方法确定最佳阈值以精确计算数字。

import cv2

img # this is your original image
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
retval, threshold = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
cv2.imwrite("threshold.png", threshold)

结果: enter image description here