Я пытаюсь реализовать алгоритм скользящего окна, чтобы распознавать буквы на изображении. Для начала я сделал программу для обнаружения одной буквы. Вот программа:
def sliding_window(image):
box = [200, 200]
image = process_image(image)
for i in range(0,image.shape[0]-box[0], 10):
for j in range(0,image.shape[1] - box[1], 10):
win_image = image[i:i+box[0], j:j+box[1]]
print(i, j)
win_image = cv2.resize(win_image, (28,28))
win_image = np.expand_dims(win_image, axis=2)
win_image = win_image/255
x = np.array([win_image])
y = model.predict(x)
m = np.max(y[0])
if m >= 0.9:
plt.imshow(win_image[:,:,0])
plt.show()
return m, np.argmax(y[0])
process_image
просто преобразует изображение в двоичный формат. model
- это модель Keras, которая обучается с использованием буквенных данных. Проблема в том, что модель обнаруживает неправильную букву, потому что когда окно частично принимает букву, они выглядят иначе, например. частичный B выглядит как R. Итак, он распознает неправильные буквы, как здесь: Здесь модель распознает букву как R, даже если это B. Как я могу предотвратить это? Другая проблема заключается в том, как обнаружить несколько букв в изображении? Кроме того, есть ли лучший способ обнаружения букв вместо использования скользящих окон?