# 构建手写数字OCR的应用程序 # # 需要一些 train_data 和 test_data。 OpenCV 附带一个图像digits.png,其中有 5000 个手写数字(每个数字 500 个)。每个数字都是一个 20x20 的图像。、 # 第一步是将这个图像分成 5000 个不同的数字。对于每个数字,我们将其展平为 400 像素的一行。那就是我们的特征集,即所有像素的强度值。这是我们可以创建的最简单的功能集。 # 第二部使用每个数字的前 250 个样本作为 train_data,剩下的250 个样本作为 test_data # 然后训练数据; import numpy as np import cv2 image = cv2.imread('1/1.jpg',0) image.resize(20,20) ret, image = cv2.threshold(image, 0, 255, cv2.THRESH_OTSU | cv2.THRESH_BINARY_INV) testImage = image.reshape(-1,400).astype(np.float32) # 用所有数据作为训练数据 knn=cv2.ml.KNearest_load('knn_data.npz') img_pre=knn.predict(image) print(img_pre) ret,result,neighbours,dist = knn.findNearest(testImage, 3) print(result)