pyqt5实现Mninst 手写数字预测(keras框架)

功能:该界面能够加载一个50x50的mnist图片,然后使用预训练的模型进行预测“该图片是几"

代码:test01.py

# -*- coding: utf-8 -*-

"""
Module implementing Form.
"""

from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QWidget
import sys
from PyQt5 import QtWidgets, QtCore, QtGui
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

from Ui_test01 import Ui_Form
from PyQt5.QtWidgets import QApplication

import numpy as np
import os
import gzip
import keras
from keras.models import Sequential # 导入序贯模型,可以通过顺序的方式,叠加神经网络层
from keras.layers import Dense

from keras import optimizers
from keras.optimizers import SGD # 导入优化函数
from keras.models import load_model
import imageio

class Form(QWidget, Ui_Form):
    """
    Class documentation goes here.
    """
    def __init__(self, parent=None):
        """
        Constructor
        
        @param parent reference to the parent widget
        @type QWidget
        """
        super(Form, self).__init__(parent)
        self.setupUi(self)
    
    @pyqtSlot()
    def on_pushButton_clicked(self):
        self.imgName, imgType = QFileDialog.getOpenFileName(self, "打开图片", "", "*.jpg;;*.png;;All Files(*)")
        self.jpg = QtGui.QPixmap(self.imgName).scaled(self.label.width(), self.label.height())
        self.label.setPixmap(self.jpg)

    
    @pyqtSlot()
    def on_pushButton_2_clicked(self):
        """
        Slot documentation goes here.
        """
        # 模型的路径
        path = "D:/Data/Model/model_file_path.h5"
        #加载模型
        model = load_model(path)
        png=imageio.imread(self.imgName)
        png=png.reshape(1,784)
        png=np.tile(png,[64,1])
        result=model.predict(png)
        #print(np.argmax(result[0]))
        value=np.argmax(result[0])
        self.lineEdit.setText(str(value))
if __name__ == "__main__":
    app = QApplication(sys.argv)
    myWin = Form()
    myWin.show()
    sys.exit(app.exec_())
        

效果:

代码和数据下载

链接:https://pan.baidu.com/s/1UDNkgTfZiN6RD9Qt0cM_eA 
提取码:0ow0 
 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章