У меня есть следующее изображение, которое является отсканированным изображением бумаги формата А4. Мне нужно сделать так, чтобы отдельные символы отсканированного изображения были преобразованы в изображение размером 28 * 28 или 32 * 32. Я делаю это для генерации набора данных для Ovan Devanagari. Я применил простое обмолот, которое мне не помогает. Но когда я применил адаптивное обмолот, результат не такой, как ожидалось.
После выполнения градации серого и определения порога я получаю следующее изображение с порогом
Изображение моего финального индивидуального персонажа похоже на
Но мои ожидаемые изображения (28 * 28) были похожи. .
Мой исходный код:
# grayscale
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# cv2.imshow('gray', gray)
# binary
#simple threshing
#ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY_INV)
#cv2.imshow('threshold', thresh)
# adaptive threshing
thresh = cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY_INV,11,6)
cv2.imshow('threshold', thresh)
# dilation
kernel = np.ones((10, 1), np.uint8)
img_dilation = cv2.dilate(thresh, kernel, iterations=1)
# find contours
# cv2.findCountours() function changed from OpenCV3 to OpenCV4: now it have only two parameters instead of 3
cv2MajorVersion = cv2.__version__.split(".")[0]
# check for contours on thresh
if int(cv2MajorVersion) >= 4:
ctrs, hier = cv2.findContours(img_dilation.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
else:
im2, ctrs, hier = cv2.findContours(img_dilation.copy(), cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)
# sort contours
sorted_ctrs = sorted(ctrs, key=lambda ctr: cv2.boundingRect(ctr)[0])
for i, ctr in enumerate(sorted_ctrs):
# Get bounding box
x, y, w, h = cv2.boundingRect(ctr)
# Getting ROI
# roi = image[y:y + h, x:x + w]
roi = thresh[y:y + h, x:x + w]
# resizing
resize = cv2.resize(roi, (28, 28))
if w > 15 and h > 15:
cv2.imwrite(str(i) + str(time.time()) + '{}.png'.format(i), resize)
Подскажите, пожалуйста, как извлечь отдельный символ в черно-белом 28 * 28 изображении для сбора набора данных. Если у вас есть какие-либо идеи о создании набора данных, он будет очень полезен.