Python + OpenCV:

时间:2016-12-19 12:47:00

标签: python opencv image-processing ocr

我正在尝试通过移动拍摄的照片进行光学字符识别。在预处理的第一阶段之后,我有如下图像:

enter image description here

我遇到的第一个问题是它是旋转的,我用下面的代码解决了它:

import cv2
import numpy as np

def rotateImage(image):
    inverse = (255-image)
    lines = cv2.HoughLines(inverse, 2, np.pi/180, 100)
    angle = lines[0][0][1]

    shape = (image.shape[1], image.shape[0])
    image_center = tuple(np.array(shape)/2)
    rot_mat = cv2.getRotationMatrix2D(image_center,-angle,1.0)
    result = cv2.warpAffine(image, rot_mat, shape,flags=cv2.INTER_LINEAR)
    return result

img = cv2.imread('image.png', 0)

rotated = rotateImage(img)
cv2.imshow('rotated', rotated)

这基本上可以找到字符下方水平线的角度,并以该角度旋转图像。

然而,我现在的主要问题是,当我尝试进行OCR时,垂直线有时会被读作“l”或“1”。你会采用什么方法删除那些垂直线和/或在字符之间用它们进行OCR?

必须考虑的事项:

  1. 旋转并不完美,所以我们不能假设线条是纵向的。

  2. 有时候角色会碰到线条,难以检测到它们。

0 个答案:

没有答案