PyQt5图形界面+KerasOpenCV手写数字识别ORC模型

PyQt5图形界面+KerasOpenCV手写数字识别ORC模型

用PyQt5制作的数字识别桌面软件,可实现:

(1)能够读取和存储图像,对图像进行去噪和对比度增强;

(2)对图像中的不同数字进行分割;

(3)识别出图像中数字的真实值;

(4)设计软件界面。

系统: windows10

处理器: Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz

开发软件: Pycharm 2022.3

Python版本: python3.6.5

QT版本: PyQt5

Anaconda-env包环境:

使用Keras框架训练模型,在工程文件中生成模型my_mnist_model.h5;
设计图形界面MainWindow:
在pycharm中配置pyqt5-tools工具,使用PyQt5 Designer完成基本图形界面布局,生成PaintBoard.ui,再使用PyUIC5将PaintBoard.ui转为PaintBoard.py ;

创建启动程序CallWindows.py :
用于启动图形界面程序PaintBoard.py ;打包工程时会将此文件打包为exe可执行文件

设计手写板程序:
设计Skatchpad.py,实现最基本的画图功能,并在PaintBoard.py的主界面初始化函数setupUi中引入手写板程序,将其设为私有变量__paintBoard;

from Sketchpad import Sketchpad

画板区域
self.__paintBoard = Sketchpad(self)

设定画板区域位置(30,110),画板大小为(611,461)
self.__paintBoard.setGeometry(QtCore.QRect(30, 110, 611, 461))

Python

在PaintBoard.py 中增加数字识别相关函数;
给控件关联功能函数:
在PaintBoard.py 的Ui_MainWindow类中增加图形界面上各控件的功能函数,并在图形界面初始化函数setupUi中,将功能函数与控件按钮相关联在一起;

将savebutton按键按下信号与保存函数相关联
self.savebutton.clicked.connect(self.on_btn_Save_Clicked)

8.打包: 成功运行后,在Anaconda Prompt相应的env环境中使用pyinstaller将工程打包为可执行文件,打包命令为: pyinstaller -F -w CallWindows.py –hidden-import Sketchpad.py –hidden-import PaintBoard.py –hidden-import model.py –hidden-import my_mnist_model.h5 –hidden-import PyQt5 –hidden-import sys –hidden-import cv2 –hidden-import numpy –hidden-import matplotlib –hidden-import keras –hidden-import os Python 打包后生成可跨平台运行的桌面程序(该程序必须包含以下文件,否则会运行失败);

这是一个使用Keras框架训练模型的代码,用于识别MNIST手写数字数据集中的数字图像。

首先,通过导入MNIST数据集并使用matplotlib库显示其中一个图像来加载数据。MNIST 数据集是一个常用的手写数字识别数据集,包含了 60,000 张训练图像和 10,000 张测试图像。 程序首先使用 keras.datasets 中的 mnist.load_data 函数导入 MNIST 数据集。然后使用 matplotlib.pyplot 库中的 imshow 函数将一张训练图像和对应的标签显示出来。

接着,程序对训练和测试数据进行预处理。首先使用 numpy.reshape 函数将图像数据转换为 (28, 28, 1) 的形状,然后使用 numpy.astype 函数将图像数据转换为浮点类型,并将图像像素值除以 255 归一化。最后,使用 keras.utils.np_utils 中的 to_categorical 函数将标签转换为 one-hot 编码。

程序中的 model_conv 函数定义了一个卷积神经网络模型。该模型包含三个卷积层和两个全连接层,使用 ReLU 激活函数。最后,使用交叉熵损失函数和 RMSProp 优化器编译模型。

接下来,程序使用训练数据训练模型,并使用测试数据评估模型的性能。最后,使用 model.save 函数将模型保存为文件 my_mnist_model.h5。 这个程序的目的是构建一个可以在 MNIST 数据集上进行手写数字识别的模型。程序使用卷积神经网络构建模型,并在训练过程中,使用 model.fit 函数对模型进行训练。该函数接收训练数据和标签以及训练的轮数(这里为 5 轮)、批量大小(这里为 64)和验证数据的比例(这里为 10%)作为参数。

训练过程中,模型会在训练数据上进行训练,并在验证数据上进行评估,以验证模型的性能是否有所提高。

在训练结束后,使用 model.evaluate 函数对模型在测试数据上的性能进行评估。该函数返回损失值和准确率,并打印。

最后,使用 model.save 函数将训练好的模型保存为文件 my_mnist_model.h5,以便在后续使用时直接调用。

2.1.2 PaintBoard.py
accessPiexl 函数用于将图像中的像素取反。接收一个图像参数 img,并将图像中每个像素的值设为 255 减去原来的值。

联系微信
联系微信
热线电话

提供最优质的资源集合

立即查看 了解详情