【发布时间】:2017-04-30 04:56:39
【问题描述】:
我有一批图像要扫描。其中一些有一条横过要扫描的字符的横线,如下所示:
我做了一个可以去掉水平线的程序:
import cv2
import numpy as np
img = cv2.imread('image.jpg',0)
# Applies threshold and inverts the image colors
(thresh, im_bw) = cv2.threshold(img, 128, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
im_wb = (255-im_bw)
# Line parameters
minLineLength = 100
maxLineGap = 10
color = 255
size = 2
# Substracts the black line
lines = cv2.HoughLinesP(im_wb,1,np.pi/180,minLineLength,maxLineGap)[0]
for x1,y1,x2,y2 in lines:
cv2.line(img,(x1,y1),(x2,y2),color,size)
cv2.imshow('clean', img)
这会返回下面的图像:
那么,您知道如何对这些白线穿过的字符进行 OCR 处理吗?您会采用与所述方法不同的方法吗?
如果有不清楚的地方,请提出任何问题。谢谢。
【问题讨论】:
-
您是否尝试过编写一种算法,只删除它所跨越的字符笔划之外的黑线部分?我建议专注于这一点。一旦知道线条粗细(假设它具有一致的粗细),您可以检查线条上方和下方是否有黑色像素,如果上方和下方的像素都是白色的,则一次只删除一列。跨度>