Python——yolov8识别车牌2.0

目录

一、前言

二、关于项目UI

2.1、修改界面内容的文本

2.2、修改界面的图标和图片

 三、项目修改地方

 四、其他配置问题


一、前言

  • 因为后续有许多兄弟说摄像头卡顿,我在之前那个MATS上面改一下就可以了,MAST项目:基于YOLOv8的多端车流检测系统(用于毕设+开源)-CSDN博客
  • 其实这个直接用yolov8的官方api就可以了,然后在画标签那里修改一下代码,就可以了
  • 卡顿的原版项目:(这里有配置方法)Python——基于YOLOV8的车牌识别(源码+教程)_车牌识别python代码-CSDN博客

代码包:

YOLOv8-license-plate-recognize-2.zip - 蓝奏云文件大小:42.0 M|icon-default.png?t=N7T8https://wwwf.lanzout.com/inCTH1izjrqh配置方法和原项目差不多~如果有配置问题,可以看看下面的内容

二、关于项目UI

因为MATS那个基础项目,就没有用ui文件,所以这个也没有UI文件了

在修改pyside6时,最好有一些这方面的基础

2.1、修改界面内容的文本

可以自行修改ui文件夹里面的main_window.py

2.2、修改界面的图标和图片

1、替换或修改YOLOv8-license-plate-recognize-2\ui\img中的图片(img那个文件夹里面)

2、把resources.qrc中的对应映射进行修改,如果你是添加了文件,就按照那个格式新增就好了

3、使用命令——重新编译为资源文件:pyside6-rcc resources.qrc -o resources_rc.py


重新启动程序,查看是否更新成功

 三、项目修改地方

其实,很多东西,原项目都写好了,只需要在画标签那里,自定义一下就好了,把对应的坐标和图片丢给lprr就行了

关于lprr本人一窍不通,只是调用了他的api,然后他可以返回一个车牌的结果

画标签的代码:(写得丑陋,请大佬们指正,Python没有常用,常写)

 在yolo.py的333行

    # 画标签到图像上def creat_labels(self, detections, img_box, model):# 画车牌 draw a license platelabel_plate = []xy_xy_list = detections.xyxy.squeeze()class_id_list = detections.class_id.squeeze().tolist()xyxy = []# 车牌获取for i in range(len(xy_xy_list)):if isinstance(class_id_list, int) and class_id_list != 0:continue# 如果长度为1,则是intif isinstance(class_id_list, int) and class_id_list == 0:xy_xy_filter = xy_xy_listxyxy.append(xy_xy_filter)plate = de_lpr(xy_xy_filter, img_box)plate = np.array(plate)car_number = ""for m in range(0, plate.shape[1]):# 将字符转换成车牌号码b = CHARS[plate[0][m]]car_number += blabel_plate.append(car_number)continue# 长度不为1if class_id_list[i] != 0:   # 只选择是车牌的目标continuexy_xy_filter = xy_xy_list[i]xyxy.append(xy_xy_filter)plate = de_lpr(xy_xy_filter, img_box)plate = np.array(plate)car_number = ""for m in range(0, plate.shape[1]):# 将字符转换成车牌号码b = CHARS[plate[0][m]]car_number += blabel_plate.append(car_number)# 修改坐标数组detections.xyxy = np.array(xyxy)# 要画出来的信息labels_draw = label_plate# labels_draw = [#     f"ID: {tracker_id} {tracker_id}"#     for _, _, confidence, class_id, tracker_id in detections#     if model.model.names[class_id] in label_names# ]'''如果Torch装的是cuda版本的话:labels_draw代码需改成:labels_draw = [f"OBJECT-ID: {tracker_id} CLASS: {model.model.names[class_id]} CF: {confidence:0.2f}"for _,confidence,class_id,tracker_id in detections]'''# 存储labels里的信息labels_write = [f"目标ID: {tracker_id} 目标类别: {class_id} 置信度: {confidence:0.2f}"for _, _, confidence, class_id, tracker_id in detections]'''如果Torch装的是cuda版本的话:labels_write代码需改成:labels_write = [f"OBJECT-ID: {tracker_id} CLASS: {model.model.names[class_id]} CF: {confidence:0.2f}"for _,confidence,class_id,tracker_id in detections]'''pprint(detections)# 打印结果print(detections.xyxy)# 如果显示标签 (要有才可以画呀!)---否则就是原图if (self.show_labels == True) and (self.class_num != 0):img_box = self.box_annotator.annotate(scene=img_box, detections=detections, labels=labels_draw)return labels_write, img_box

 四、其他配置问题

  1. 配置环境中,有一个lap,在pip安装时,需要下载一个东西,根据报错提示中的链接,去下载就好了
  2. 如果你预测失败,多半是yolo版本问题,需要你自己根据报错修改一下,还有关于其他库,就是opencv版本(或者其他库,比如sv等)不一样,根据报错的库名,卸载重新安装对应版本
  3. 此项目的main_window的ui文件是没有的,用猫鱼老哥的开源改的,他当时就没有用ui文件。直接手写了,然后我也只好手写ui了。
  4. 关于type object 'Detections' has no attribute 'from_yolov8'问题的解决:由于Detection删除了from,所以需要降级,又因为前面的sv调用,所以把supervision降级为0.6.0即可解决pip install supervision==0.6.0
  5. 如果你遇到了问题:可以看看这个文章里面的评论区:基于YOLOv8的多端车流检测系统(用于毕设+开源)-CSDN博客

关于训练模型+预测:(如何训练模型——我之前写过一篇文章,可以翻翻前面的看看)

  1. 如果训练版本使用的是和预测版本一样的话,就可以直接用
  2. 要用自己训练的那个yolo版本的话,那么预测项目里面yolo版本就换为你训练的那个版本(不过可能有api改了,但是一般改动不大,自行根据报错修改就好了)

关于使用CUDA

  1. cuda版本的pytorch,需要自己根据项目的注释和报错修改就好了
  2. 因为使用了CUDA,他预测返回的数据格式和之前的不一样,建议自行打印出来,根据数据找到自己需要数据,就可以啦~
  3. label根据具体内容,修改就行了~

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/580078.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【leetcode100-019】【矩阵】螺旋矩阵

【题干】 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 【思路】 不难注意到,每进行一次转向,都有一行/列被输出(并失效);既然已经失效,那我…

OV5640:寄存器 自用

正点原子: //****************************************Copyright (c)***********************************// //原子哥在线教学平台:www.yuanzige.com //技术支持:www.openedv.com //淘宝店铺:http://openedv.taobao.com //关注…

KEPServerEX 6 之【外篇-2】PTC-ThingWorx服务端软件安装 PostgreSQL本地安装

---------------------------安装相关信息--------------- 默认用户角色 : Postgres 密码:root@123 localhost 用户角色 :postgres_tw 密码 root@123 端口 5432 ------------------------------------------------------------------ 1. WIN 安装 Postgre…

倒计时1天!WAVE SUMMIT+ 2023将开启,五大亮点抢鲜看!

10句话2分钟,挑战成功说服宿管阿姨开门,这个人群中的“显眼包”是一个接入文心大模型4.0游戏里的NPC,妥妥 “工具人”实锤~ 尝试用AI一键自动识别好坏咖啡豆,看一眼便知好坏,真正“颜值即正义”&#xff0…

信息筑牢安全防线|隐私安全保护仍任重道远!

在日常生活中,就连小小一张快递面单可以显示很多关键信息,让不法分子盗取个人信息有机可乘。 今年2月1日,《快递电子运单》国家标准开始实施。根据国家邮政局数据,中国快递日均包裹量3.4亿余件,隐私面单日均使用量已超…

构造数字(贪心算法)

在一个宁静的早晨, 迪迦奥特曼突然发现了一个奇特的物体。这个物体是一个来自未知星球的超级数字计算器。这个计算器拥有强大的功能, 可以计算出任何数字的结果, 甚至可以解析出数字之间的深层次联系和规律。 随着时间的推移, 迪迦…

13.鸿蒙HarmonyOS App(JAVA)文本框组件按钮点击提示

13.鸿蒙HarmonyOS App(JAVA)文本框按钮点击提示 点击按钮触发组件状态,点击改变颜色 文本框组件,文本居中,斜体,左右对齐,点击显示提示信息 Button button(Button) findComponentById(ResourceTable.Id_btn_1); but…

git集成github(一):主要步骤

一、创建仓库 1、创建本地git仓库 在pcharm主界面顶栏,点击VCS,再点击创建git仓库,然后选择项目根路径,点击确认。这时,可以看到顶栏的VCS变成了git。 2、远程仓库下载到本地 打开一个远程仓库,点击code…

C# Winform教程(一):MD5加密

1、介绍 在C#中,MD5(Message Digest Algorithm 5)是一种常用的哈希函数,用于将任意长度的数据转换为固定长度的哈希值(通常是128位)。MD5广泛用于校验数据完整性、密码存储等领域。 2、示例 创建MD5加密…

元宇宙与VR虚拟现实的未来如何?

从科幻小说到商业现实 自从 Facebook年更名为 Meta 以来,关于元宇宙的热议不断,人们对虚拟世界的兴趣也重新燃起,因为尽管虚拟现实 (VR) 的概念由来已久,但该技术现在才开始真正得以应用。 定义元宇宙和虚拟现实 首先是 The Met…

【2024考研】心情记录

今天是12.26日。距离24考研已经过去了2天,自认为缓过来了,故写下这篇文章。 25日早上简单过了一下答案,但实在是记不住答案了,不知道是我的脑子抵触还是怎的,像一块灰色的布遮住了我的记忆,羞于打开&#x…

爬虫爬取豆瓣电影、价格、书名

1、爬取豆瓣电影top250 import requests from bs4 import BeautifulSoupheaders {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" }for i in range(0, 250, 25):pr…

【Java、Python】获取电脑当前网络IP进行位置获取(附源码)

我相信看到这篇博客的时候心里肯定是想解决自己的一个问题的,而这篇博客我就以简单快速的方式解决这些烦恼! 一、获取当前IP 在Java中自带了一些自己的流对象来获取当前的IP地址,不多说我们直接上代码。 //获取当前网络ip地址 ipAddress Ine…

TCP并发服务器

一.进程实现TCP并发服务器 #include <func.h> #define PORT 6666 #define IP "192.168.124.42"void handler(int arm) {while(waitpid(-1,NULL,WNOHANG) > 0); } int main(int argc, const char *argv[]) {//接受17号信号signal(17, handler);i…

Flink导入StarRocks

1、pom依赖 <properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><flink.version>1.13.6</flink.version><scala.binary.version>2.12</scala.binary.version&…

2014年第三届数学建模国际赛小美赛A题吹口哨解题全过程文档及程序

2014年第三届数学建模国际赛小美赛 A题 吹口哨 原题再现&#xff1a; 哨子是一种小装置&#xff0c;当空气被迫通过开口时会发出声音。哨声的巨大而引人注目&#xff0c;使其对警察和体育裁判来说至关重要。当救生员、迷路的露营者或犯罪受害者使用它们时&#xff0c;它们可以…

网站显示不安全警告怎么办?消除网站不安全警告超全指南

网站显示不安全警告怎么办&#xff1f;当用户访问你的网站&#xff0c;而您的网站没有部署SSL证书实现HTTPS加密时&#xff0c;网站就会显示不安全警告&#xff0c;这种警告&#xff0c;不仅有可能阻止用户继续浏览网站&#xff0c;影响网站声誉&#xff0c;还有可能影响网站在…

阿赵UE学习笔记——5、创建关卡元素

阿赵UE学习笔记目录 大家好&#xff0c;我是阿赵。   之前介绍了从空白模板创建关卡&#xff0c;接下来尝试着在这个空白的世界里面&#xff0c;创建一些内容。 一、创建地面 1、创建面片作为地面 创建——形状——平面&#xff0c;可以创建一个面片 在细节面板设置合适的…

C# 事件(Event)

C# 事件&#xff08;Event&#xff09; C# 事件&#xff08;Event&#xff09;通过事件使用委托声明事件&#xff08;Event&#xff09;实例 C# 事件&#xff08;Event&#xff09; 事件&#xff08;Event&#xff09; 基本上说是一个用户操作&#xff0c;如按键、点击、鼠标移…

分布式锁竟然这么简单?(荣耀典藏版)

大家好&#xff0c;我是小月夜枫&#xff0c;作为一个后台开发&#xff0c;不管是工作还是面试中&#xff0c;分布式一直是一个让人又爱又恨的话题。它如同一座神秘的迷宫&#xff0c;时而让你迷失方向&#xff0c;时而又为你揭示出令人惊叹的宝藏。 今天&#xff0c;让我们来…