七格数字识别-计算机视觉
Seven bars digits recognition - Computer vision
我正在尝试识别下图底部左角代表时间的数字。
具体来说就是我需要识别的这张图片:
数字采用七格格式。
我正在使用 opencv 和 tesseract,但我使用的任何过滤器都没有获得好的结果。
这是开发的代码(我假设数字所在的部分已经确定,所以这是我的起点):
image = cv2.imread("C:\example2.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (5, 5), 0)
edged = cv2.Canny(blurred, 50, 200, 255)
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"
text = pytesseract.image_to_string(edged)
已尝试使用另一组滤镜,但 none 给我的结果接近图像。
提前致谢。
Tesseract 喜欢白底黑字。另外,它喜欢 characters to be a minimum height.
我通过 cv2.THRESH_OTSU
来执行 Otsu thresholding 和 cv2.THRESH_BINARY_INV
来反转图像(将黑色变为白色,将白色变为黑色)。在原始大小下,“9”被识别为“q”。我调整了2倍,识别度更好了。
import cv2
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"
img = cv2.imread('example2.jpg', cv2.IMREAD_GRAYSCALE)
thresh = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)[1]
thresh = cv2.resize(thresh, (0,0), fx=2, fy=2) # scale image 2X
detected_text = pytesseract.image_to_string(thresh, config = '--psm 6')
print(detected_text)
这给出了
9:47
我正在尝试识别下图底部左角代表时间的数字。
具体来说就是我需要识别的这张图片:
数字采用七格格式。
我正在使用 opencv 和 tesseract,但我使用的任何过滤器都没有获得好的结果。
这是开发的代码(我假设数字所在的部分已经确定,所以这是我的起点):
image = cv2.imread("C:\example2.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (5, 5), 0)
edged = cv2.Canny(blurred, 50, 200, 255)
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"
text = pytesseract.image_to_string(edged)
已尝试使用另一组滤镜,但 none 给我的结果接近图像。
提前致谢。
Tesseract 喜欢白底黑字。另外,它喜欢 characters to be a minimum height.
我通过 cv2.THRESH_OTSU
来执行 Otsu thresholding 和 cv2.THRESH_BINARY_INV
来反转图像(将黑色变为白色,将白色变为黑色)。在原始大小下,“9”被识别为“q”。我调整了2倍,识别度更好了。
import cv2
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"
img = cv2.imread('example2.jpg', cv2.IMREAD_GRAYSCALE)
thresh = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)[1]
thresh = cv2.resize(thresh, (0,0), fx=2, fy=2) # scale image 2X
detected_text = pytesseract.image_to_string(thresh, config = '--psm 6')
print(detected_text)
这给出了
9:47