本项目采用Python结合OpenCV库,实现了基于K近邻(K-Nearest Neighbor, KNN)算法的手写数字识别系统,为图像处理与机器学习爱好者提供了一个实用的学习案例。
我使用了机器学习入门中的KNN算法来实现手写数字识别功能,并对代码进行了一些改进以修复bug并增加新功能。输入是在一个512*512大小的白色画布上绘制黑色线条,然后将其转换为0和1组成的矩阵。通过查找训练数据中最相似的k个样本来进行识别。目前该系统可以处理所有字符的训练与识别,但当前仅包含数字的数据集。
为了提高准确率,需要增加更多的训练数据以涵盖更多种类的手写体特征。现在一个数字书写大约十次左右就能获得较高的准确性,并且每次进行识别时会将此次的结果和对应的01矩阵添加到训练数据文件夹中,以此来提升后续的识别性能。如果系统识别出错,则可以通过输入正确的答案来扩充训练集,从而进一步提高系统的准确率。