parent
161ee4489c
commit
96a27bdee8
@ -0,0 +1,115 @@
|
|||||||
|
import sys
|
||||||
|
|
||||||
|
import cv2
|
||||||
|
from PyQt5.QtCore import pyqtSignal
|
||||||
|
from PyQt5.QtCore import QThread
|
||||||
|
from PyQt5.QtWidgets import QFileDialog, QMessageBox
|
||||||
|
from PyQt5 import QtWidgets, QtGui
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
import model
|
||||||
|
import utils
|
||||||
|
from GUI import Ui_MainWindow
|
||||||
|
import tensorflow.compat.v1 as tf
|
||||||
|
|
||||||
|
|
||||||
|
def cnn(picture_name):
|
||||||
|
picture_name = cv2.imread(picture_name)
|
||||||
|
image = cv2.resize(picture_name, (utils.IMAGE_WIDTH, utils.IMAGE_HEIGHT))
|
||||||
|
|
||||||
|
normalizer_image = image / 255.0 - 0.5
|
||||||
|
|
||||||
|
image = np.array(normalizer_image)
|
||||||
|
|
||||||
|
x, _, _, result = model.get_model(is_train=False, keep_prob=1)
|
||||||
|
|
||||||
|
with tf.Session() as sess:
|
||||||
|
pics = []
|
||||||
|
saver = tf.train.Saver()
|
||||||
|
saver.restore(sess, "./result/result.ckpt")
|
||||||
|
pics.append(image)
|
||||||
|
# 概率
|
||||||
|
prediction = sess.run(result, feed_dict={x: pics})
|
||||||
|
# 类别
|
||||||
|
pred_result = np.argmax(prediction)
|
||||||
|
return pred_result, prediction
|
||||||
|
|
||||||
|
|
||||||
|
class dpv_thread(QThread): # 检测的线程
|
||||||
|
img_breakSignal = pyqtSignal(int)
|
||||||
|
|
||||||
|
def __init__(self, parent=None):
|
||||||
|
super(dpv_thread, self).__init__()
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
global picture_name, pred_result, prediction
|
||||||
|
pred_result, prediction = cnn(picture_name)
|
||||||
|
self.img_breakSignal.emit(prediction)
|
||||||
|
|
||||||
|
|
||||||
|
class HelmetWindow(QtWidgets.QMainWindow, Ui_MainWindow):
|
||||||
|
def __init__(self):
|
||||||
|
super(HelmetWindow, self).__init__()
|
||||||
|
self.setupUi(self)
|
||||||
|
self.setWindowTitle("花花检测") # 设置窗口程序标题
|
||||||
|
self.setStyleSheet("#MainWindow{background-color:lightskyblue}")
|
||||||
|
|
||||||
|
self.read_img.clicked.connect(self.Read_img)
|
||||||
|
self.start_detect.clicked.connect(self.Start_detect)
|
||||||
|
self.show_img.setScaledContents(True)
|
||||||
|
self.DPV_thread = dpv_thread() # 实例化检测
|
||||||
|
self.DPV_thread.img_breakSignal.connect(self.Show_text)
|
||||||
|
|
||||||
|
def Read_img(self):
|
||||||
|
global picture_name
|
||||||
|
picture_name, imgType = QFileDialog.getOpenFileName(self, "打开图片", "", "*.jpg;;*.png;;All Files(*)")
|
||||||
|
jpg = QtGui.QPixmap(picture_name).scaled(self.show_img.width(), self.show_img.height())
|
||||||
|
self.show_img.setPixmap(jpg)
|
||||||
|
print(picture_name)
|
||||||
|
if picture_name == '':
|
||||||
|
return '图片打开失败'
|
||||||
|
|
||||||
|
def Start_detect(self):
|
||||||
|
self.DPV_thread.start()
|
||||||
|
|
||||||
|
def Show_text(self):
|
||||||
|
global pred_result, prediction
|
||||||
|
if pred_result == 0:
|
||||||
|
show = ('桃花: %.2f' % prediction[:, 0])
|
||||||
|
elif pred_result == 1:
|
||||||
|
show = ('梅花: %.2f' % prediction[:, 1])
|
||||||
|
elif pred_result == 2:
|
||||||
|
show = ('牡丹: %.2f' % prediction[:, 2])
|
||||||
|
elif pred_result == 3:
|
||||||
|
show = ('牵牛花: %.2f' % prediction[:, 3])
|
||||||
|
elif pred_result == 4:
|
||||||
|
show = ('玫瑰: %.2f' % prediction[:, 4])
|
||||||
|
elif pred_result == 5:
|
||||||
|
show = ('茉莉: %.2f' % prediction[:, 5])
|
||||||
|
else:
|
||||||
|
show = ('蒲公英: %.2f' % prediction[:, 6])
|
||||||
|
self.show_text.append(show)
|
||||||
|
|
||||||
|
def closeEvent(self, event): # 关闭窗口响应函数,在这里面弹出确认框,并销毁线程
|
||||||
|
reply = QMessageBox.question(self,
|
||||||
|
'本程序',
|
||||||
|
"是否要退出程序?",
|
||||||
|
QMessageBox.Yes | QMessageBox.No,
|
||||||
|
QMessageBox.No)
|
||||||
|
if reply == QMessageBox.Yes:
|
||||||
|
event.accept()
|
||||||
|
else:
|
||||||
|
event.ignore()
|
||||||
|
|
||||||
|
def mousePressEvent(self, QMouseEvent):
|
||||||
|
if self.isMaximized():
|
||||||
|
self.showNormal()
|
||||||
|
else:
|
||||||
|
self.showMaximized()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app = QtWidgets.QApplication(sys.argv)
|
||||||
|
ui = HelmetWindow()
|
||||||
|
ui.show()
|
||||||
|
sys.exit(app.exec_())
|
Loading…
Reference in new issue