本项目为前几天收费帮学妹做的一个项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。
一、项目描述
基于 KNN 算法的简易手写数字识别器
这是一个基于 KNN 算法的简易手写数字识别器,无需深度学习框架即可实现多位手写数字的识别。项目通过 PyQt5 构建图形界面,提供了手写画板、实时识别、训练数据保存等功能,主要用于演示机器学习基础算法的实际应用。
二、项目功能
手写输入:支持在画板上通过鼠标书写多位数字,笔画可实时显示
实时识别:点击“识别”按钮后,自动处理手写内容并显示识别结果
交互重置:提供重置按钮,可清空画板内容和识别结果,重新输入
三、运行环境
操作系统:Windows 系统
Python 版本:Python 3.10 及以上
依赖库:需安装 PyQt5、OpenCV (cv2)、NumPy、Pandas、PIL (Pillow)
四、项目技术
KNN 分类算法:自行实现的 K 近邻算法,通过计算待识别样本与训练集的欧氏距离,取最近的 K 个邻居进行投票分类
图像处理流水线:
使用 OpenCV 将手写图像缩放为固定尺寸
灰度化 + 二值化处理,提取黑白特征
按列分割数字区域,裁剪上下白边,将数字居中
统一缩放为 32×32 像素,转换为 1024 位二值特征向量
GUI 实现:基于 PyQt5 框架,通过 QPainter 捕获鼠标轨迹实现手写画板,支持实时绘制与事件响应
特征匹配:将提取的二值特征与训练集中的样本逐一比对,返回距离最近的数字类别
以上系统源码经过技术整理与调试,确保能正常运行
五、项目截图