预测手写数字(预测不准)
下面这段代码是 OpenCV-Python-Tutorial-中文版.pdf (P268)中的实现,
当前系列所有demo下载地址:
https://github.com/GaoRenBao/OpenCv4-Demo
https://gitee.com/fuckgrb/OpenCv4-Demo
不同编程语言对应的OpenCv版本以及开发环境信息如下:
语言 | OpenCv版本 | IDE |
C# | OpenCvSharp4.4.8.0.20230708 | Visual Studio 2022 |
C++ | OpenCv-4.5.5-vc14_vc15 | Visual Studio 2022 |
Python | OpenCv-Python (4.6.0.66) | PyCharm Community Edition 2022.1.3 |
这个代码是PDF中官方的扩展代码,预测效果其实并不准确,博主也没深究,先贴出来供大伙学习下。
C#版本代码如下:
【略】
C++版本代码如下:
【略】
Python版本代码如下:
验证码
https://login.bthhotels.com
import numpy as np
import cv2
with np.load('knn_data_num.npz') as data:
print(data.files) # ['train', 'train_labels', 'test', 'test_labels']
train = data['train']
train_labels = data['train_labels']
test = data['test']
test_labels = data['test_labels']
print('加载KNN,数据')
knn = cv2.ml.KNearest_create()
knn.train(train, cv2.ml.ROW_SAMPLE, train_labels)
# 加载相片
print('加载相片')
img2 = cv2.imread('2.png', 0)
gray2 = cv2.resize(img2, (20, 20))
# gray2=gray2.reshape((400,))
gray21 = gray2.reshape((-1, 400)).astype(np.float32)
img6 = cv2.imread('6.png', 0)
gray6 = cv2.resize(img6, (20, 20))
# gray2=gray2.reshape((400,))
gray61 = gray6.reshape((-1, 400)).astype(np.float32)
g2 = np.append(gray21, gray61)
g3 = g2.reshape((2, 400))
# 预测
retval, results = knn.predict(g3)
print(retval, results) # 不准确
# (0.0, array([[ 0.],[ 5.]], dtype=float32))