系统简介:
车牌识别技术作为经典的机器视觉任务,具有广泛的应用前景。通过图像处理方法,车牌识别技术能够对车牌上的字符进行检测、定位和识别,从而实现计算机对车牌的智能化管理。在现实生活中,车牌识别系统已在小区停车场、高速公路出入口、监控区域和自动收费站等场所得到广泛应用,其研究发展也逐渐趋于成熟。然而尽管车牌识别技术已经深入我们的生活,其在精度和识别速度方面仍有进一步提升的空间。因此实现车牌识别系统对于深入学习和理解图像处理的先进技术具有重要意义。
车牌识别算法经历了多次迭代,其检测效率和准确率得到了显著提升。从最初基于局部二值模式(LBP)和Haar特征的车牌检测,发展到后来采用深度学习方法,如单次多框检测器(SSD)、实时目标检测系统(YOLO)等算法。车牌识别部分也从简单的字符匹配发展为深度神经网络。这一系列的技术进步使得车牌识别技术在检测和识别效果以及适用性方面均表现出更为突出的优势。
主要功能:
1、识别文件夹中的所有图片,并实时输出(如下展示图3所示)
2、识别车辆视频文件,并在视频中显示出当前的车牌号码
3、识别某一张图片,并展示车牌号
4、开启摄像头识别当前车牌号
界面展示:
部分代码(完整代码在最后):
class Plate_MainWindow(Ui_MainWindow):
def __init__(self, MainWindow):
self.count = 0 # 表格行数,用于记录识别车牌条目
self.res_set = [] # 用于车牌历史结果记录的列表
self.cap_video = None # 视频流对象
self.path = getcwd()
self.video_path = getcwd()
self.fontC = ImageFont.truetype("./Font/platech.ttf", 14, 0)
self.timer_camera = QtCore.QTimer() # 定时器
self.timer_video = QtCore.QTimer() # 视频定时器
self.flag_timer = "" # 用于标记正在进行的功能项(视频/摄像)
self.CAM_NUM = 0 # 摄像头标号
self.cap = cv2.VideoCapture(self.CAM_NUM) # 屏幕画面对象
self.cap_video = None # 视频流对象
# self.model = pr.LPR("./HyperLPR_CarNum/model/cascade_lbp.xml", "./HyperLPR_CarNum/model/model12.h5",
# "./HyperLPR_CarNum/model/ocr_plate_all_gru.h5")
self.current_image = None # 保存的画面
self.setupUi(MainWindow) # 界面生成
self.retranslateUi(MainWindow) # 界面控件
# 设置表格形式
self.tableWidget.setColumnWidth(0, 80)
self.tableWidget.setColumnWidth(1, 200)
self.tableWidget.setColumnWidth(2, 150)
self.tableWidget.setColumnWidth(3, 200)
self.tableWidget.setColumnWidth(4, 120)
# self.tableWidget.setSelectionBehavior(QAbstractItemView.SelectRows)
self.slot_init() # 槽函数设置