答案 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))
注意:这将随机加入找到的字母,一种解决方法是使用boxes
对x,y
列表进行排序,然后裁剪。
当tesseract可以直接检测文本时,为什么要执行所有这些操作?如果您想获得更好的结果,则应该使用深度学习来采用现代方法。