首页 > 编程语言 >基于yolov8的车牌检测与识别系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】

基于yolov8的车牌检测与识别系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】

时间:2024-12-11 19:58:36浏览次数:5  
标签:python 检测 self list label 源码 location conf setText

   更多目标检测、图像分类识别、目标追踪等项目可看我主页其他文章

功能演示:

基于yolov8的车牌检测与识别系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】_哔哩哔哩_bilibili

(一)简介

基于yolov8的车牌检测与识别系统在pytorch框架下实现的,这是一个完整的项目,包括代码,数据集,训练好的模型权重,模型训练记录,GUI界面和各种模型指标(准确率、精确率、召回率等)等。

GUI界面由pyqt5设计实现,可用笔记本摄像头或者外接USB摄像头

该项目是在pycharm和anaconda搭建的虚拟环境执行,pycharm和anaconda安装和配置可观看教程:

超详细的pycharm+anaconda搭建python虚拟环境_pycharm anaconda环境搭建-CSDN博客

(二)项目介绍

1. 模型训练、验证

​该项目可以使用已经训练好的模型权重,也可以自己重新训练,自己训练也比较简单:

第一步:修改data/data.yaml中的数据集路径

​​

第二步:模型训练与验证,即运行train.py文件 

第三步:使用模型,即运行gui.py文件即可通过GUI界面来展示模型效果

2. 数据集 

​​​​​

部分数据展示: 

​​​​

3.GUI界面(技术栈:pyqt5+python) 
a.GUI初始界面

b.图像检测界面

​​

c.视频或摄像实时检测界面 

​​

4.模型训练和验证的一些指标及效果

​​

​​

 ​​

 

(三)代码

由于篇幅有限,只展示核心代码

    def upload_img(self):
        """上传图片"""
        # 选择录像文件进行读取
        self.comboBox.setDisabled(False)
        self.pushButton_4.setEnabled(False)
        # 上传图像
        fileName, fileType = QFileDialog.getOpenFileName(self, 'Choose file', '', '*.jpg *.png *.tif *.jpeg')
        if fileName:
            self.file_path = fileName
            """检测图片"""
            org_path = self.file_path
            # 目标检测
            t1 = time.time()
            # 图像检测
            results = self.model.predict(source=org_path, imgsz=self.output_size, conf=self.conf_threshold)[0]
            names = results.names
            t2 = time.time()
            self.label_6.setText('{:.3f} s'.format(t2 - t1))
            now_img = results.plot()
            # 调整图像大小
            self.resize_scale = self.output_size / now_img.shape[0]
            im0 = cv2.resize(now_img, (0, 0), fx=self.resize_scale, fy=self.resize_scale)
            cv2.imwrite("images/tmp/single_result.jpg", im0)
            # 自适应图像大小
            self.label_3.setScaledContents(True)
            # 显示图像
            self.label_3.setPixmap(QPixmap("images/tmp/single_result.jpg"))
            # 获取位置信息
            location_list = results.boxes.xyxy.tolist()
            location_list = [list(map(int, e)) for e in location_list]
            # 获取类别信息
            cls_list = results.boxes.cls.tolist()
            cls_list = [int(i) for i in cls_list]
            # 获取置信度信息
            conf_list = results.boxes.conf.tolist()
            conf_list = ['%.2f %%' % (each * 100) for each in conf_list]
            # 目标总数
            total_nums = len(location_list)
            self.label_11.setText(str(total_nums))
            choose_list = ['全部']
            target_names = [names[id] + '_' + str(index) for index, id in enumerate(cls_list)]
            choose_list = choose_list + target_names
            # 复合框信息
            self.comboBox.clear()
            self.comboBox.addItems(choose_list)

            self.results = results
            self.names = names
            self.cls_list = cls_list
            self.conf_list = conf_list
            self.location_list = location_list
            
            # 显示目标框
            if total_nums >= 1:
                # 渲染类别和置信度信息
                self.label_16.setText(names[cls_list[0]])
                self.label_15.setText(str(conf_list[0]))
                #   默认显示第一个目标框坐标
                #   设置坐标位置值
                self.label_13.setText(str(location_list[0][0]))
                self.label_19.setText(str(location_list[0][1]))
                self.label_21.setText(str(location_list[0][2]))
                self.label_23.setText(str(location_list[0][3]))
            else:
                # 清空显示框
                self.label_16.setText(' ')
                self.label_15.setText(' ')
                self.label_13.setText(' ')
                self.label_19.setText(' ')
                self.label_21.setText(' ')
                self.label_23.setText(' ')

(四)总结

以上即为整个项目的介绍,完整的项目包括代码,数据集,训练好的模型权重,模型训练记录,GUI界面和各种模型指标等 

整个项目包含全部资料,一步到位,省心省力

若项目使用过程中出现问题,请及时交流!

标签:python,检测,self,list,label,源码,location,conf,setText
From: https://blog.csdn.net/lanbo_ai/article/details/144339422

相关文章

  • 基于java的SpringBoot/SSM+Vue+uniapp的校园博客系统的详细设计和实现(源码+lw+部署文
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 基于java的SpringBoot/SSM+Vue+uniapp的旅游管理系统的详细设计和实现(源码+lw+部署文
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 免费分享24套Java源码,涵盖SpringBoot、Vue、SSM等项目
    前言亲测并修复过的源码免费分享给大家,涵盖了SpringBoot、Vue等多个项目,适用于学习、参考及实践开发。所有源码都经过详细测试,确保其功能的可用性。以下是我整理并分享的部分源码列表:1.SpringBoot+Vue前后端分离博客系统点击下载2.SpringBoot+Vue的前后端分离课程......
  • VSCode中Python文件的自动格式化
    Python文件的自动格式化首先随便打开一个项目,创建一个[[Python]]文件按Shift+Alt+F,会进行格式化,不出意外会出现下图:那么就去安装坑点就在这,会出现很长一串,然后发现都不是是一个叫BlackFormatter的插件,装完之后再Shift+Alt+F会出现下面这个点击配置出现这个,选就OK了如果......
  • 【最新原创毕设】基于SpringBoot的学生选课管理系统+56695(免费领源码)可做计算机毕业设
    基于Springboot和Vue的学生选课管理系统的设计与实现摘 要本文介绍了一种基于SpringBoot和Vue的学生选课管理系统的设计与实现。该系统旨在提供一个高效、可靠的选课平台,使学生和教职工能够方便地进行课程选择和管理。在系统设计上,我们采用了SpringBoot作为后端框架,利用......
  • (2024最新毕设合集)基于的同城学校二手交易平台|可做计算机毕业设计JAVA、PHP、爬虫、AP
    同城学校二手交易平台设计与实现摘 要利用SpringBoot框架和相关Uni-app技术,设计和实现一个高效、可靠的同城学校二手交易平台。该系统将提供闲置、发布、求购等主要功能,旨在促进二手交易平台的便捷和透明化。本研究首先介绍了同城学校二手交易平台的研究背景和现状,包括同城......
  • 免费送源码:Java+ssm+springboot springboot高校网上选课系统 计算机毕业设计原创定制
    摘要本论文主要论述了如何使用JAVA语言开发一个高校网上选课系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述高校网上选课系统的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行......
  • Free5GC源码研究(15) - AMF研究(四)
    前文再研究AMF的sbi接口后,又研究了其nas和ngap接口,本文折返回去继续研究sbi接口剩下的几个功能AMF的sbi接口模块,虽然看起来代码和函数很多,但其基本功能也就两个,一是提供对UEContext的操作,这功能还基本上旨在新旧AMF之间切换时才会用到;第二个功能是作为UE/RAN与核心网其他NF之......
  • 浅谈Python+requests+pytest接口自动化测试框架的搭建
    框架的设计思路首先要明确进行接口自动化需要的步骤,如下图所示: 然后逐步拆解需要完成的工作:1)了解分析需求:了解接口要实现的功能2)数据准备:根据开发文档确定接口的基本情况,知晓接口的url、请求方式、入参等信息,然后根据业务逻辑以及入参来预期接口的输出需要有一个配置文件来......
  • 源码编译geoserver
    官方链接:https://docs.geoserver.org/main/en/developer/maven-guide/index.html Maven指南使用Maven构建GeoServer的参考。安装Maven 查看工具。运行Maven Maven提供了广泛的命令,可用于执行从编译模块到生成测试覆盖率报告等所有操作。大多数maven命令都可以......