我有一个提取的图像作为,我想裁剪并提取该图像中的各个字母。
我已经尝试了下面的代码,但是它只适用于像这样写的图像名称,我一次得到的结果是单个字母。
import cv2
import numpy as np
img = cv2.imread('data1/NAME.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, thresh1 = cv2.threshold(gray,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
kernel = np.ones((3, 3), np.uint8)
imgMorph = cv2.erode(thresh1, kernel, iterations = 1)
contours, hierarchy = cv2.findContours(imgMorph,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
i=1
for cnt in contours:
x,y,w,h = cv2.boundingRect(cnt)
if w>10 and w<100 and h>10 and h<100:
#save individual images
cv2.imwrite("data1/NAME_{}.png".format((i)),thresh1[y:y+h,x:x+w])
i=i+1
cv2.imshow('BindingBox',imgMorph)
cv2.waitKey(0)
cv2.destroyAllWindows()
该代码给出以下结果
和
等
预期结果,像这样。
最佳答案
当公用线与其他字母一样粗时,您无法使用形态学运算来分离触摸或重叠的字母。
您无法分割字母,但是可以使用机器学习等高级OCR技术识别它们。
阅读此http://www.how-ocr-works.com/OCR/word-character-segmentation.html
关于python-3.x - 从图像中的单词中提取字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59065556/