本科课设 基于Python的手写体数字识别

摘要:针对多位手写体数字识别问题,实现了一种交互式图像分割和数字识别的应用程序。程序以Python语言编写,通过Tkinter实现图形用户界面开发,利用OpenCV进行图像处理,并采用TensorFlow进行基于卷积神经网络的数字识别。程序分为模型训练模块和数字识别模块两个部分。模型训练模块程序采用包含60,000张训练图片和10,000张测试图片的MNIST数据集进行训练,构建一个包含卷积层、池化层、打平层、全连接层、随机失活层的神经网络模型,将该模型保存以供数字识别模块使用。数字识别模块程序,可通过摄像头捕获图像进行实时处理,也可对计算机系统中已有的图像文件进行处理,且允许用户交互式调整参数。采用一张含有多个手写体数字的实拍照片进行测试,获得了99.22%的识别正确率。

这是一个基于 Python 的手写体数字识别项目,该项目融合了图像处理、计算机视觉与深度学习技术,旨在提供一个交互式的图形用户界面,用于多位手写数字的图像分割与识别。项目由多个模块构成,包括图像预处理、数字分割、CNN 模型训练与评估,以及实时数字识别等功能。

项目特点

  • 交互式界面:使用 Tkinter 构建图形用户界面,支持摄像头实时捕捉与文件输入。
  • 图像处理:利用 OpenCV 对输入图像进行增强、分割和预处理。
  • 深度学习识别:采用 TensorFlow 构建并训练卷积神经网络(CNN)模型,对单个手写数字进行高准确率预测。
  • 模块化设计:项目分为数据预处理、模型训练、模型评估、图像分割与数字识别等多个模块,便于扩展和定制。
  • 主要模块

  • crop.py:用于从图像中自动裁剪指定区域。
  • evaluation.py:加载训练好的模型并评估其在测试数据上的表现。
  • main_v2.py / main_v4.py / main_v6_zh.py:基于 Tkinter 的交互式 GUI 应用,支持图像分割、文件选择和摄像头输入,实现数字识别功能。
  • plot.py:可视化 CNN 模型的结构,生成模型架构图。
  • recognize_digits.py:对输入图像进行预处理,并利用 CNN 模型进行手写数字预测。
  • segment_v1.py / segmentation.py:提供图像的交互式分割接口,利用 OpenCV 进行图像阈值处理和形态学操作。
  • train_model_v2.py / train_model_v3.py / train_model_v3_without_dropout.py:基于 MNIST 数据集进行 CNN 模型训练,支持使用 dropout 正则化或取消 dropout。
  • 安装依赖

    确保已安装以下依赖:

  • Python 3.x
  • TensorFlow
  • OpenCV (opencv-python)
  • NumPy
  • Tkinter(通常随 Python 发行版附带)
  • 你可以使用下面的命令安装所需的 Python 库:

    pip install tensorflow opencv-python numpy

    使用方法

    1. 训练模型:运行 train_model_v2.py 或 train_model_v3.py(含 dropout)根据需要选择训练脚本,训练完成后会保存模型文件用于后续识别。
    2. 模型评估:使用 evaluation.py 评估训练得到的模型性能。
    3. 数字识别:运行主程序(如 main_v4.py 或 main_v6_zh.py)启动图形用户界面,通过摄像头或选择本地图片对手写数字进行识别。

    作者:Shankang Ke

    物联沃分享整理
    物联沃-IOTWORD物联网 » 本科课设 基于Python的手写体数字识别

    发表回复