在OpenCV中找不到正确的轮廓

2024-06-07 03:27:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试构建一个OCR应用程序,并在Python中使用openCV作为其中的一部分。为了准备训练集,我有一个包含单词的图像条,我希望将该条带与标签(字符串中的实际单词)一起提供给openCV进程,以便openCV进程能够找到与单词中每个字符对应的正确轮廓。在

我面临的问题是识别错误的轮廓。这里展示的图片揭示了这一点。左边写的文字(AQR2035012)是与图片中文字对应的标签。可以看出,对应于不规则轮廓的提取字符被映射。在

enter image description hereenter image description here

我会在这里请求opencv masters来建议我哪里做错了。 谢谢。在

代码如下:

image=cv2.imread(os.path.join(training_images_folder,imagefolder,filename))                                
image = cv2.GaussianBlur(image, (5, 5), 0)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray, 0, 150, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]                
contours = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
contours = contours[0] if imutils.is_cv2() else contours[1]                
letter_image_regions = []
for contour in contours:
    (x,y,w,h) = cv2.boundingRect(contour)
    if(w/h>0.5):
        trim_width=int(w / 2)
        letter_image_regions.append((x,y,trim_width,h))
        letter_image_regions.append((x + trim_width, y, trim_width, h))   
    else:
        letter_image_regions.append((x,y,w,h))
for letter_bounding_box, letter_text in zip(letter_image_regions, extracted_label):
    x,y,w,h = letter_bounding_box
    letter_image = gray[y-2:y+h+2, x-2:x+w+2]
    print(extracted_label, letter_text)
    cv2.imshow('img',letter_image)
    cv2.waitKey()

这是原始图像

enter image description here


Tags: 图像image进程标签width单词cv2opencv