车牌识别系统四:Pyqt5编写简易车牌识别界面

车牌识别界面

车牌识别系统设计完成后,最后再使用Pyqt5设计一个简易的车牌识别界面,全部代码如下:

#coding=gbk
"""
车牌识别系统界面(qt)
__author__ = kuang
2019.5.20    7号宿舍楼
"""
import sys
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication, QLabel, QHBoxLayout, QVBoxLayout, QLineEdit, QFileDialog
from PyQt5 import QtGui
from PIL import Image

import test1
import plate as pl
import cut
import cv2 as cv

 
class Example(QWidget):
    
    def __init__(self,parent=None):
        super(Example,self).__init__(parent)
        
        self.initUI() #界面绘制交给InitUi方法

    def initUI(self):
        #定义label读取图片显示原图
        self.lb1 = QLabel(self)
        self.lb1.setGeometry(0,50,640,480)

        #定义车牌定位后的图片
        self.lb21 = QLabel(self)
        self.lb21.setGeometry(700,50,100,100)
        self.lb21.setText('车牌提取结果:')
        self.lb21.setStyleSheet("color:white")

        #设置车牌定位结果的位置
        self.lb2 = QLabel(self)
        self.lb2.setGeometry(700,120,160,40)

        #分割字符显示
        self.lb22 = QLabel(self)
        self.lb22.setGeometry(700,145,100,100)
        self.lb22.setText('字符分割结果:')
        self.lb22.setStyleSheet("color:white")

        self.lb31 = QLabel(self)
        self.lb31.setGeometry(700,175,100,100)
        self.lb32 = QLabel(self)
        self.lb32.setGeometry(735,175,100,100)
        self.lb33 = QLabel(self)
        self.lb33.setGeometry(770,175,100,100)
        self.lb34 = QLabel(self)
        self.lb34.setGeometry(805,175,100,100)
        self.lb35 = QLabel(self)
        self.lb35.setGeometry(840,175,100,100)
        self.lb36 = QLabel(self)
        self.lb36.setGeometry(875,175,100,100)
        self.lb37 = QLabel(self)
        self.lb37.setGeometry(910,175,100,100)

        #定义文本框
        self.lb23 = QLabel(self)
        self.lb23.setGeometry(700,230,100,100)
        self.lb23.setText('车牌识别结果:')
        self.lb23.setStyleSheet("color:white")

        self.editLine1 = QLineEdit(self)
        self.editLine1.setGeometry(700,300,100,30)

        #定义按钮
        button1 = QPushButton('显示图片',self)
        button1.setGeometry(25,600,100,40)
        button1.clicked.connect(self.button1_click)
        
        button2 = QPushButton('车牌提取',self)
        button2.setGeometry(175,600,100,40)
        button2.clicked.connect(self.button2_click)

        button4 = QPushButton('字符分割',self)
        button4.setGeometry(325,600,100,40)
        button4.clicked.connect(self.button4_click)
        
        button3 = QPushButton('车牌识别',self)
        button3.setGeometry(475,600,100,40)
        button3.clicked.connect(self.button3_click)

        #设置背景
        window_pale = QtGui.QPalette()
        window_pale.setBrush(self.backgroundRole(),   QtGui.QBrush(QtGui.QPixmap("back.jpg")))
        self.setPalette(window_pale)

        #设置窗口的位置和大小
        self.setGeometry(200, 100, 1000, 700)
        #设置窗口的标题
        self.setWindowTitle('车牌识别系统')
        #显示窗口
        self.show()

    def loadfile(self):
        imgName, imgType = QFileDialog.getOpenFileName(self, "打开图片", "D://project1//.idea//", "*.jpg;;*.png;;All Files(*)")
        print(imgName)
        return imgName

    def button1_click(self):
        imgName = self.loadfile()
        img = cv.imread(imgName)
        #print (img.size)
        out = cv.resize(img,(640,480),)
        cv.imwrite("new.jpg",out)
        jpg = QtGui.QPixmap('new.jpg')
        self.lb1.setPixmap(jpg)
        
    def button2_click(self):
        img = cv.imread('new.jpg')
        imgp = pl.location(img)
        cut.cut(imgp)
        out = cv.resize(imgp,(160,40),)
        cv.imwrite('newchepai.jpg',out)
        jpg1 = QtGui.QPixmap('newchepai.jpg')
        self.lb2.setPixmap(jpg1)

    def button4_click(self):
        jpg = QtGui.QPixmap('D:/project1/test/1.bmp')
        self.lb31.setPixmap(jpg)
        jpg1 = QtGui.QPixmap('D:/project1/test/2.bmp')
        self.lb32.setPixmap(jpg1)
        jpg2 = QtGui.QPixmap('D:/project1/test/3.bmp')
        self.lb33.setPixmap(jpg2)
        jpg3 = QtGui.QPixmap('D:/project1/test/4.bmp')
        self.lb34.setPixmap(jpg3)
        jpg4 = QtGui.QPixmap('D:/project1/test/5.bmp')
        self.lb35.setPixmap(jpg4)
        jpg5 = QtGui.QPixmap('D:/project1/test/6.bmp')
        self.lb36.setPixmap(jpg5)
        jpg6 = QtGui.QPixmap('D:/project1/test/7.bmp')
        self.lb37.setPixmap(jpg6)

    def button3_click(self):
        PROVINCES = ("川","鄂","赣","甘","贵","桂","黑","沪","冀","津","京","吉","辽","鲁","蒙","闽","宁","青","琼","陕","苏","晋","皖","湘","新","豫","渝","粤","云","藏","浙")
        a,b = test1.predicts()
        c = test1.predictn()
        self.editLine1.setText(PROVINCES[b] +  c[0] + "·" + c[1:6])

if __name__ == '__main__':
    #创建应用程序和对象
    app = QApplication(sys.argv)
    ex = Example()
    ex.show()
    sys.exit(app.exec_())

测试结果如下:在这里插入图片描述

  • 10
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
### 回答1: PyQt5是一个流行的Python编程语言库,用于创建GUI应用程序。YOLOv5是一种目标检测算法,用于快速和准确地识别图像中的对象。 通过结合PyQt5和YOLOv5,可以实现一个车牌识别系统。首先,需要将YOLOv5模型与PyQt5界面进行集成。可以在PyQt5的主窗口中添加一个按钮,用于选择要识别的图像文件。当用户点击按钮时,系统会弹出一个文件选择对话框,用户可以选择要识别的图像。 选择图像后,将图像传递给YOLOv5模型进行车牌检测。YOLOv5模型将返回每个检测到的车牌的位置和边界框坐标。在PyQt5界面上,可以使用标记框和文字标签等元素将检测到的车牌可视化。 此外,可以添加一个识别按钮,让用户在检测到车牌后点击此按钮以执行车牌识别车牌识别可以使用OCR(光学字符识别)技术,将车牌图像转换为实际的车牌号码。识别到的车牌号码可以显示在PyQt5界面的文本标签中,使用户可以轻松查看识别结果。 最后,为了提高系统的用户友好性,可以添加一个清除按钮,用于清除之前的结果并重置系统状态,以便用户可以继续选择和识别新的图像。 总之,通过使用PyQt5和YOLOv5,可以创建一个具有用户界面车牌识别系统,使用户能够选择图像并实时查看和识别车牌。这样的系统可以在许多场景中应用,如安防监控、智能交通系统等。 ### 回答2: PyQt5是一个基于Python的图形用户界面开发工具包,通过使用PyQt5可以方便地创建各种桌面应用程序。而YOLOv5则是一种基于深度学习的目标检测算法,可以实现对图像中多个目标的准确检测和分类。 要实现车牌识别系统,可以结合使用PyQt5和YOLOv5。 首先,需要使用YOLOv5进行车牌检测。YOLOv5通过训练深度神经网络模型,可以准确地检测图像中的车牌位置。可以使用已经训练好的YOLOv5模型,也可以自己训练模型来适应特定的场景。 然后,利用PyQt5创建一个图形用户界面,用于显示图像和识别结果。可以使用PyQt5的各种组件来实现用户界面的布局和交互。可以添加一个图像显示区域,用于展示待识别的图像,同时在图像上绘制出检测到的车牌位置。可以添加一个文本框,用于显示识别出的车牌号码。 接着,在PyQt5界面中添加一个按钮,用于触发车牌识别的功能。当用户点击该按钮时,程序会将待识别的图像传入YOLOv5模型进行检测,并将检测结果显示在界面上的图像和文本框中。 最后,可以使用PyQt5的信号与槽机制,将用户界面与YOLOv5的识别功能连接起来。在用户点击识别按钮后,程序会调用YOLOv5模型进行识别操作,然后将结果显示在用户界面上。 综上所述,使用PyQt5和YOLOv5可以实现一个车牌识别系统PyQt5用于创建图形用户界面,显示图像和识别结果,而YOLOv5用于对图像进行车牌检测和识别。通过将两者结合,可以实现一个功能完善的车牌识别系统

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值