- 自动识别拍照上传的手写数字图片
- python3.7
- opencv-python
- numpy
- torch_cuda
- pyqt5
- 运行mainwindow.py
- 点击“打开文件“按钮,选择要处理的图片,此时会显示待处理的图片
- 点击”二值化“按钮,生成二值化后的图片
- 二值化图片不完美,拖动最左边的”黑白“滚动条,再次点击“二值化”按钮,直到二值化图片尽可能完美
- 点击”显示结果“按钮,生成带标签的结果图片
- 结果图片可能会将非数字标记,拖动中间的”最小框“滚动条和最右边的”最大框“滚动条,调节标记框的大小,再次点击”显示结果“按钮,知道结果尽可能完美
- mycnn_minist.pth: 存放模型的文件
- images: 用于测试的图片文件夹
- make_model: 用于生成模型
- image_prediction.py: 处理程序
- mainwindow.py: 主窗口程序
- 功能要求:
- 手写数字之后,拍照上传到电脑
- 读入照片,能够进行数字分割并显示
- 按照顺序读取每一个数字并识别
- 打印数字到固定框内
- 其他要求
- 在Windows上运行
- 可执行文件双击运行
- 环境
- python 3.7
- pytorch_cuda
- opencv-python
- python实现手写字的图片分割、处理、预测,返回
- 训练模型
- python实现GUI框架
- 打包为exe
-
输入:图片路径
-
过程:
- 读取文件
- 灰度化
- 反转、二值化
- 使用opencv框出图片
- 处理为28*28手写字图片
- 以此使用模型预测数次
-
输出
- 二值化之后的图片
- 框出值之后的图片
- 预测后框出的图片
- 数字序列
-
思路
-
找代码,修改
-
范例:HandwrittenDigitRecognition,准备将其修改
-
每个处理函数都以图片作为输入和输出
-
训练模型参考:使用PyTorch实现CNN
-
-
问题
- 由于输入的初始图象存在阴影、杂质等各种现象,所以根据不同的初始图片,识别框还有二值化阈值可能需要调整
- 解决方法:GUI上增加三项调节条,且显示二值化结果,方便随时调整
- 实际识别率还有一些问题
- 影响不大,不管了
- 手写字体非常难以在纸面上进行排序
- 放弃输出数字序列
- 由于输入的初始图象存在阴影、杂质等各种现象,所以根据不同的初始图片,识别框还有二值化阈值可能需要调整
- CNN训练即可,保存
- 简易界面
- 失败,而且就算成功,由于依赖较多,将会有3G文件,不实用,遂放弃