我一直在寻找这个问题的答案,但找不到任何有用的东西。构建块和隔离字符OpenCV
我想用相机读取机器可读区域。我需要从机器可读区域逐个提取字符并提供给OCR。我尝试了阈值图像,找到轮廓,逐个提取字符,但是在实时相机上查找轮廓时会遗漏一些字符,并且我得到的结果不符合我的预期。
尽管机器可读区域已知大小,形式,是否有适当的方法为每个字符构建块并将其提取出来?
更新代码
rect = []
blur = cv2.medianBlur(roi_gray,3) #roi_gray is aligned horizontally MRZ zone
thresh = cv2.adaptiveThreshold(blur,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY,11,2)
_,contours, hierarchy = cv2.findContours(thresh.copy(),cv2.RETR_CCOMP,cv2.CHAIN_APPROX_SIMPLE)
contours = sorted(contours, key=cv2.contourArea, reverse = True)[:90]
minH = 20
minW = 20
for ctr in contours:
if cv2.contourArea(ctr) < 1000:
xyc,wh,a = cv2.minAreaRect(ctr)
w,h = wh
x,y = xyc
if h >= minH or w >= minW:
rect.append(cv2.boundingRect(cv2.approxPolyDP(ctr,3,True)))
RECT由含有收集的轮廓,但问题是,阈值与实施例字符n之后分裂成两个轮廓,或它不是由findContours发现所以信在最后输出中缺少。
视频
我已经找到了视频,似乎笔者建立的每个字符块可惜作者没有提供有关方法或代码的任何其他信息。 Video link
它会更容易让我们来帮助你,如果你与你的情况至少一个图像为我们提供描述。 – m3h0w
我提供了一个视频链接 – Streem
是的,但这是一个有效的软件。如果您向我们证明了您确实存在问题,那么帮助您会更容易。例如,像阈值和轮廓查找期间的图像。这里最大的敌人是规模和视角的转变 - 视频演示的算法对于较小的角度转换非常稳健。 – m3h0w