Код из документации работал пока:
Код: Выделить всё
import numpy as np
import cv2 as cv
img = cv.imread('digits.png')
gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
# Now we split the image to 5000 cells, each 20x20 size
cells = [np.hsplit(row,100) for row in np.vsplit(gray,50)]
...
# Now we check the accuracy of classification
# For that, compare the result with test_labels and check which are wrong
matches = result==test_labels
correct = np.count_nonzero(matches)
accuracy = correct*100.0/result.size
print( accuracy )
Теперь я пытаюсь запустить этот код, чтобы изменить размер/масштаб моих изображений, чтобы они вписались в обученную модель и предсказали, какие рукописный номер есть на каждом изображении. Причина в том, что мои изображения имеют размеры 70x51, 63x48 или 69x49. Оно варьируется для каждого изображения.
И вот что у меня получилось:
Код: Выделить всё
img_resized = cv.resize(img, (20, 20), interpolation=cv.INTER_AREA)
img_flatten = img_resized.reshape(-1, 400).astype(np.float32)
with np.load(knn_data_path) as data:
train = data['train']
train_labels = data['train_labels']
knn = cv.ml.KNearest_create()
knn.train(train, cv.ml.ROW_SAMPLE, train_labels)
ret, result, neighbours, dist = knn.findNearest(img_flatten, k=5)
return int(result[0][0])

Что-то работает не так. Как я могу изменить размер изображений, чтобы запустить KNN? Пожалуйста, помогите!
Подробнее здесь: https://stackoverflow.com/questions/793 ... 400-pixels
Мобильная версия