from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QTableWidgetItem
#from PyQt5.QtGui import *
from PyQt5.QtGui import QPixmap, QPalette
from PyQt5.QtCore import pyqtSlot, Qt, QThread, pyqtSignal, QEvent
from UI.ui_LicensePlate import Ui_MainWindow
import pyqtgraph
import numpy as np
import onnxruntime
import cv2
import os
import sys
# sys.path.append("../license_plate")
import onnx_infer
from PIL import Image, ImageDraw, ImageFont
import time
# 设置 PyQtGraph 显示配置
########################################################################################################################
# 设置显示背景色为白色,默认为黑色
pyqtgraph.setConfigOption('background', 'w')
# 设置显示前景色为黑色,默认为灰色
pyqtgraph.setConfigOption('foreground', 'k')
# 设置图像显示以行为主,默认以列为主
pyqtgraph.setConfigOption('imageAxisOrder', 'row-major')
class MainWindow(Ui_MainWindow, QMainWindow):
def __init__(self):
super(Ui_MainWindow, self).__init__()
self.setupUi(self)
self.widget.ui.histogram.hide()
self.widget.ui.menuBtn.hide()
self.widget.ui.roiBtn.hide()
self.currowcnt = 0
self.rbtnstate = 0
self.thrdtest = WorkerThread(self)
self.vwthread = None
self.label_11.setText('<a href="https://github.com/niceboy086/license-plate-recognition">https://github.com/niceboy086/license-plate-recognition</a>')
self.label_13.setText('<a href="https://blog.csdn.net/ggw007">https://blog.csdn.net/ggw007</a>')
self.label_11.setOpenExternalLinks(True)
self.label_13.setOpenExternalLinks(True)
self.label_11.installEventFilter(self)
self.label_13.installEventFilter(self)
self.labelcolor = self.label_11.palette().color(QPalette.Window)
self.label_14.setText('47391900')
self.label_14.setStyleSheet("background-color: yellow;color: blue;font: bold;" )
#self.label_14.setTextInteractionFlags(Qt.TextSelectableByMouse)
self.label_14.installEventFilter(self)
self.label_14.setToolTip('单击QQ号复制到剪贴板!')
self.tableWidget.verticalHeader().setVisible(False)
self.tableWidget.horizontalHeader().setStyleSheet(
"border-bottom-width: 0.5px;border-style: outset;border-color: rgb(220,220,220);")
self.tableWidget.setRowCount(5)
self.tableWidget.setColumnCount(7)
self.tableWidget.setHorizontalHeaderLabels(
['序号', '图片文件', '车牌号','颜色','位置', '关键点', '置信度'])
self.model_det_path = "model/plate_detect.onnx"
self.model_rec_path = "model/plate_rec_color.onnx"
providers = ['CPUExecutionProvider']
self.session_detect = onnxruntime.InferenceSession(
self.model_det_path, providers=providers)
self.session_rec = onnxruntime.InferenceSession(
self.model_rec_path, providers=providers)
self.pushButton_2.clicked.connect(self.recFrom) # type: ignore
# self.pushButton_3.clicked.connect(self.recFromFolder) # type: ignore
#toggled信号与槽函数绑定
self.radioButton_3.toggled.connect(lambda: self.btnstate(self.radioButton_3))
self.radioButton_2.toggled.connect(lambda: self.btnstate(self.radioButton_2))
self.radioButton.toggled.connect(lambda: self.btnstate(self.radioButton))
self.thrdtest.signUi.connect(self.acceptthreadsignal)
self.thrdtest.finished.connect(self.threadfinished)
def eventFilter(self, obj, event):
if obj == self.label_11:
if event.type() == QEvent.Enter:
print("label_11 mouse enter")
self.label_11.setStyleSheet("background-color: yellow; ")
return True # 说明这个事件已被处理,其他控件别插手
elif event.type() == QEvent.Leave:
print("label_11 mouse leave")
font = self.label_11.font()
font.setBold(False)
self.label_11.setFont(font)
self.label_11.setStyleSheet("background-color: {self.labelcolor}; ")
return True # 说明这个事件已被处理,其他控件别插手
elif event.type() == QEvent.MouseButtonPress:
print("label_11 mouse MouseButtonPress")
font = self.label_11.font()
font.setBold(True)
self.label_11.setFont(font)
return True # 说明这个事件已被处理,其他控件别插手
elif event.type() == QEvent.MouseButtonRelease:
print("label_11 mouse MouseButtonRelease")
font = self.label_11.font()
font.setBold(False)
self.label_11.setFont(font)
#return True # 说明这个事件已被处理,其他控件别插手
elif obj == self.label_13:
if event.type() == QEvent.Enter:
print("label_13 mouse enter")
self.label_13.setStyleSheet("background-color: yellow; ")
return True # 说明这个事件已被处理,其他控件别插手
elif event.type() == QEvent.Leave:
print("label_13 mouse leave")
font = self.label_13.font()
font.setBold(False)
self.label_13.setFont(font)
self.label_13.setStyleSheet("background-color: {self.labelcolor}; ")
return True # 说明这个事件已被处理,其他控件别插手
elif event.type() == QEvent.MouseButtonPress:
print("label_13 mouse MouseButtonPress")
font = self.label_13.font()
font.setBold(True)
self.label_13.setFont(font)
return True # 说明这个事件已被处理,其他控件别插手
elif event.type() == QEvent.MouseButtonRelease:
print("label_13 mouse MouseButtonRelease")
font = self.label_13.font()
font.setBold(False)
self.label_13.setFont(font)
#return True # 说明这个事件已被处理,其他控件别插手
elif obj == self.label_14:
if event.type() == QEvent.MouseButtonRelease:
print("label_14 mouse MouseButtonRelease")
clipboard = QApplication.clipboard()
clipboard.setText(self.label_14.text())
#return True # 说明这个事件已被处理,其他控件别插手
return QMainWindow.eventFilter(self, obj, event) # 交由其他控件处理
def recFromPic(self, filename):
#print("*debug, xxx*, RecFromPic:", filename)
filename =filename.replace('\\', '/')
pathseg = filename.split('/')[0:-2]
#print(pathseg, type(pathseg))
pathseg.append('result_onnx')
#print(pathseg, type(pathseg))
save_path = '/'.join(pathseg)
#print(save_path)
result_list, img0 = onnx_infer.det_rec_plate(
self.session_detect, self.session_rec, filename)
#print("*debug, xxx*, result_list:", type(result_list))
ori_img = onnx_infer.draw_result(img0, result_list)
img_name = os.path.basename(filename)
save_img_path = os.path.join(save_path,img_name)
#print(save_img_path)
cv2.imwrite(save_img_path,ori_img)
return result_list, ori_img, filename
def recFromMemPic(self, img):
result_list, img0 = onnx_infer.det_rec_plate(
self.session_detect, self.session_rec, img)
#print("*debug, xxx*, result_list:", type(result_list))
ori_img = onnx_infer.draw_result(img0, result_list)
return result
![avatar](https://profile-avatar.csdnimg.cn/406bb3be98ec47d79f5fe786a73bb712_ggw007.jpg!1)
ggw007
- 粉丝: 12
- 资源: 14
最新资源
- COMSOL光学仿真:光镊与光力模型专题解析(三个模型详解、近似算法与张量算法探讨),COMSOL光学仿真:光镊与光力模型专题详解(涵盖三大模型、近似算法与张量算法应用),COMSOL光学仿真:光镊
- 基于C++语言的图书馆管理系统设计源码
- BootstrapBlazor-C#资源
- Ingenious 工作流引擎-PHP资源
- 基于Matlab Simulink的光伏储能虚拟同步发电机三相全桥逆变仿真研究,基于Matlab Simulink的光伏储能虚拟同步发电机三相全桥逆变仿真研究,光伏储能同步发电机simulink仿真模
- Javascript-JavaScript资源
- CNote-计算机二级资源
- 基于COMSOL FDTD的微纳光学与电磁仿真探究光子晶体中的BIC拓扑单向传输及色散材料能带求解,COMSOL FDTD微纳光学与电磁仿真:BIC拓扑单向传输及光子晶体能带求解,COMSOL FDT
- 毕业设计-宿舍管理系统SpringBoot-毕业设计资源
- 基于OpenCV模板匹配和PySide6的数字识别-电赛资源
- 基于Java、HTML、Vue、JavaScript、CSS的智慧车辆项目设计源码
- STM32平台上的FX2N源码移植及其使用手册:实现与三菱PLC通信的完整指南,STM32平台上的FX2N源码移植及其使用手册:实现与三菱PLC通信功能的全面指南,STM32版FX2N源码&原理图&P
- IR2-Net-ACM资源
- 基于Vue框架的人脸考勤系统设计源码
- 西门子S7-200SMART PLC与MCGS7.7触摸屏组合控制伺服电机位置模式:接线指南、参数设置与运行效果展示视频,西门子S7-200SMART PLC与MCGS7.7触摸屏组合控制伺服电机位置
- 基于Vue的zzyl前端Vue, TypeScript, JavaScript, CSS, HTML设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)