使用Python和Opencv校正倾斜数字

时间:2019-09-27 12:51:42

标签: python opencv ocr

我正在寻找OCR一些不同格式的数字号码。我有一个可以在水平面上平整文本的功能,使我能够在Opencv中创建边界框,该边界框适用于我的数字图像之一。但是,第二个数字样式稍微倾斜(斜体),这有时可行,但是我发现,由于将小数点合并到一个包围矩形的数字中,小数点大部分丢失了。

有没有一种方法可以根据实际数字的垂直线对齐数字?

以下是我在水平面上的工作函数:

def deskew(img):
    img_edges = cv2.Canny(img, 100, 100, apertureSize=3)
    lines = cv2.HoughLinesP(img_edges, 1, math.pi / 180.0, 100, minLineLength=20, maxLineGap=50)

    angles = []
    for x1, y1, x2, y2 in lines[0]:
        angle = math.degrees(math.atan2(y2 - y1, x2 - x1))
        angles.append(angle)

    med_angle = np.median(angles)
    rotated_img = ndimage.rotate(img, med_angle, cval=255)

    cv2.imshow("rotated image", rotated_img)
    cv2.waitKey(0)
    return rotated_img

下面是我尝试去歪斜和OCR的图像/数字格式的类型,通过一些手动输入,我发现大约5度的角度似乎可以准确地绘制单独的边界矩形来捕获数字和小数点

enter image description here

下面是手动调整的角度,显示捕获的所有数字和小数点,可以进行OCR

enter image description here

0 个答案:

没有答案