|
- #!/usr/bin/python3
- # -*- coding: utf-8 -*-
-
- """
- ZetCode PyQt5 tutorial
-
- This program centers a window
- on the screen.
-
- Author: Jan Bodnar
- Website: zetcode.com
- Last edited: August 2017
- """
- import sys
- import cv2
- import numpy as np
- import paddle
- import math
- import time
- import collections
- from PIL import Image
- import pandas as pd
-
- from openvino.runtime import Core,Dimension
- from IPython import display
- import copy
-
- import os
- import sys
- from PyQt5.QtWidgets import QWidget, QDesktopWidget, QApplication, QPushButton, QFileDialog, QLabel, QTextEdit, QGridLayout, QFrame
- from PyQt5.QtGui import QColor
-
-
- class Example(QWidget):
-
- def __init__(self):
- super().__init__()
-
- self.F_dir = ' '*50
- self.B_dir = ' '*50
-
- self.initUI()
- self.initModel()
-
- def initUI(self):
-
- grid = QGridLayout()
- self.setLayout(grid)
-
- bt_F = QPushButton('F file', self)
- grid.addWidget(bt_F, 0, 0)
- bt_F.clicked.connect(self.showDialog)
-
- self.lb_F = QLabel(self.F_dir, self)
- grid.addWidget(self.lb_F, 0, 1)
-
- bt_B = QPushButton('B file', self)
- bt_B.resize(bt_F.sizeHint())
- grid.addWidget(bt_B, 1, 0)
- bt_B.clicked.connect(self.showDialog)
-
- self.lb_B = QLabel(self.B_dir, self)
- grid.addWidget(self.lb_B, 1, 1)
-
- bt_check = QPushButton('Check', self)
- grid.addWidget(bt_check, 2, 0)
- bt_check.clicked.connect(self.checkError)
-
- self.lb_check = QLabel(' '*50, self)
- grid.addWidget(self.lb_check, 2, 1)
-
- self.te_F = QTextEdit()
- grid.addWidget(self.te_F, 3, 0)
-
- self.te_B = QTextEdit()
- grid.addWidget(self.te_B, 3, 1)
-
- self.te_C = QTextEdit()
- grid.addWidget(self.te_C, 3, 2)
-
- # self.setGeometry(300, 300, 600, 600)
- self.setWindowTitle('test')
- self.show()
- # set center
- # self.resize(600, 600)
- # self.center()
- # self.setWindowTitle('Center')
- # self.show()
-
- def initModel(self):
- # 指定检测模型所在路径
- model_dir = "models"
- model_file_path = model_dir + "/model.pdmodel"
- params_file_path = model_dir + "/model.pdiparams"
-
- # 初始化检测模型的Inference Engine
- ie = Core()
- net = ie.read_model(model=model_file_path, weights=params_file_path)
- compiled_model = ie.compile_model(model=net, device_name="CPU")
-
- # 获取检测模型的输入输出节点
- self.input_layer = next(iter(compiled_model.inputs))
- self.output_layer = next(iter(compiled_model.outputs))
-
- self.request = compiled_model.create_infer_request()
-
- def center(self):
- qr = self.frameGeometry()
- cp = QDesktopWidget().availableGeometry().center()
- qr.moveCenter(cp)
- self.move(qr.topLeft())
-
- def showDialog(self):
- fname = QFileDialog.getOpenFileName(self, 'Open file', '/home')
- if fname[0]:
- if self.sender().text() == 'F file':
- self.F_dir = fname[0]
- self.lb_F.setText(self.F_dir)
- try:
- with open(fname[0], 'r') as f:
- data = f.read()
- self.te_F.setText(data)
- except:
- self.te_F.setHtml("<font color='red' size='24'><red>请选择csv格式文件</font>")
-
- elif self.sender().text() == 'B file':
- self.B_dir = fname[0]
- self.lb_B.setText(self.B_dir)
- try:
- with open(fname[0], 'r') as f:
- data = f.read()
- self.te_B.setText(data)
- except:
- self.te_B.setHtml("<font color='red' size='24'><red>请选择csv格式文件</font>")
-
- def checkError(self):
- if os.path.exists(self.F_dir) and os.path.exists(self.B_dir):
- try:
- F=pd.read_csv(self.F_dir)
- B=pd.read_csv(self.B_dir)
- F = F.values.transpose((1,0))
- B = B.values.transpose((1,0))
- FB = np.concatenate([F,B]).reshape([1,4,79999])
- self.request.infer(inputs={self.input_layer.any_name: FB})
- results = self.request.get_tensor(self.output_layer).data
- fin_result = np.argmax(results)
-
- if fin_result==1:
- self.lb_check.setText('Error detected, please check the mechine.')
- self.te_C.setHtml("<font color='red' size='24'><red>×<br/>输入错误或机器故障</font>")
- else:
- self.lb_check.setText('No Error.')
- self.te_C.setHtml("<font color='green' size='24'><green>√<br/>机器无故障</font>")
-
- except:
- self.lb_check.setText('Error')
- else:
- self.lb_check.setText('Please check the F/B file path and the format of the two file.')
-
- if __name__ == '__main__':
-
- app = QApplication(sys.argv)
- ex = Example()
- sys.exit(app.exec_())
|