1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| # 构建手写数字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)
|
|