图像中的Concat轮廓

时间:2018-12-09 15:59:52

标签: python opencv python-tesseract

我正在制作车牌识别应用程序。我设法找到每个板块的轮廓。我该如何裁剪,调整大小并合并它们,以便tesseract ocr能够完成工作并从印版中识别文本。为了更清楚起见,我附上了文章的图片。enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

这很简单。找到轮廓,遍历轮廓,找到每个轮廓的边界矩形,裁剪出零件,调整裁剪后的零件的尺寸并将其存储在列表中。然后,您可以迭代新列表,并使用numpy的hstack将它们加入。我已经分享了完整的代码,但是您需要一些过滤技术来去除多余的轮廓,因此请小心处理。

代码:

import cv2
import numpy as np

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

image, contours, hierarchy = cv2.findContours(img.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

boxes = list()
cropped_imageList = list()

for c in contours:
    #if you want to store the original coordinates 
    x,y,w,h = cv2.boundingRect(c)
    boxes.append((x,y,w,h))
    #crop out the part of the image and resize
    crop_img = img[y:y+h, x:x+w]
    crop_img = cv2.resize(crop_img,(50,50))
    cropped_imageList.append(crop_img)

#join them back
imstack = cropped_imageList[0]

for imgs in cropped_imageList[1:]:
    imstack = np.hstack((imstack,imgs))

注意:这将随机加入找到的字母,一种解决方法是使用boxesx,y列表进行排序,然后裁剪。

当tesseract可以直接检测文本时,为什么要执行所有这些操作?如果您想获得更好的结果,则应该使用深度学习来采用现代方法。