我正在尝试提取僧伽罗语的手写字符。我使用查找轮廓来提取字符,除了一个小故障外,它都能正常工作。
它返回字符内的非字符。例如图像!(https://imgur.com/TJl93oT)返回!(https://imgur.com/d1A6u86)!(https://imgur.com/WjObTMr)!(https://imgur.com/XlWUNz3)
我要保存的字符没有最后一个字符,而最后一个字符只是一个字符的一部分。我尝试像下面的代码中那样使用RETR_EXTERNAL标志,但是没有提取任何字符。
imagepath = 'E:/MScProject/main/for_extract/resizeimg.jpg'
extract_write_path = 'E:/MScProject/main/extraction'
extract_read_path = 'E:/MScProject/test/extract/*.*'
#Extract characters from image
img = cv2.imread(imagepath)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#cv2.imshow('gray', gray)
ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU)
#cv2.imshow('thresh', thresh)
im2, ctrs, hier = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)
sorted_ctrs = sorted(ctrs, key=lambda ctr: cv2.boundingRect(ctr)[0])
for i, ctr in enumerate(sorted_ctrs):
x, y, w, h = cv2.boundingRect(ctr)
roi = img[y:y + h, x:x + w]
area = w*h
if 1000 < area < 100000:
#rect = cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255,
0), 2)
#cv2.imshow('rect', rect)
cv2.imwrite(os.path.join(extract_write_path ,
'at'+str(i)+'.jpeg'), roi)
#cv2.imwrite('at'+str(i)+'.jpeg', roi)
我只想获得两个字符,而不是该图像中显示的内部字符。非常感谢您的帮助。