当前位置: 首页 > news >正文

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根据具体内容,修改就行了~

 

相关文章:

Python——yolov8识别车牌2.0

目录 一、前言 二、关于项目UI 2.1、修改界面内容的文本 2.2、修改界面的图标和图片 三、项目修改地方 四、其他配置问题 一、前言 因为后续有许多兄弟说摄像头卡顿,我在之前那个MATS上面改一下就可以了,MAST项目:基于YOLOv8的多端车流检…...

Cookie的详解使用(创建,获取,销毁)

文章目录 Cookie的详解使用(创建,获取,销毁)1、Cookie是什么2、cookie的常用方法3、cookie的构造和获取代码演示SetCookieServlet.javaGetCookieServlet.javaweb.xml运行结果如下 4、Cookie的销毁DestoryCookieServletweb.xml运行…...

shell脚本自动化部署Zabbix4.2(修改脚本替换版本)

#!/bin/bash # 配置无人值守的安装,定义安装过程中需要用到的一些信息 DBPasswordadmin123 CacheSize256M ZBX_SERVER_NAMEZabbix-Server http_port80 # 配置 Zabbix 防火墙 firewall-cmd --permanent --zonepublic --add-port10051/tcp firewall-cmd…...

java SSM课程平台系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM课程平台系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S…...

k8s二进制最终部署(网络 负载均衡和master高可用)

k8s中的通信模式 1、pod内部之间容器与容器之间的通信,在同一个pod 中的容器共享资源和网络,使用同一个网络命名空间,可以直接通信的 2、同一个node节点之内,不同pod之间的通信,每个pod都有一个全局的真实的IP地址&a…...

【51单片机系列】DS1302时钟模块

本文是关于DS1302时钟芯片的相关介绍。 文章目录 一、 DS1302时钟芯片介绍二、DS1302的使用2.1、DS1302的控制寄存器2.2、DS1302的日历/时钟寄存器2.3、片内RAM2.4、DS1302的读写时序 三、SPI总线介绍四、DS1302使用示例 一、 DS1302时钟芯片介绍 DS1302是DALLAS公司推出的涓流…...

深入理解C语言中冒泡排序(优化)

目录 引言: 冒泡排序概述: 优化前: 优化后(注意看注释): 解析优化后: 原理(先去了解qsort): 引言: 排序算法是计算机科学中的基础问题之一。在本篇博客中&#xff0c…...

低代码选型注意事项

凭借着革命性的生产力优势,低代码技术火爆了整个IT圈。面对纷繁复杂的低代码和无代码产品,开发者该如何选择? 在研究低代码平台的年数上,本人已有3年,也算是个低代码资深用户了,很多企业面临低代码选型上的…...

Caffeine--缓存组件

Caffeine 概念缓存手动加载自动加载手动异步加载自动异步加载 驱逐策略基于容量基于时间基于引用 移除显式移除 概念 Caffeine是一个基于Java8开发的提供了近乎最佳命中率的高性能的缓存库。与ConcurrentMap有点相似。最根本的区别是ConcurrentMap将会持有所有加入到缓存当中的…...

Centos7:Jenkins+gitlab+node项目启动(1)

Centos7:Jenkinsgitlabnode项目启动(1) Centos7:Jenkinsgitlabnode项目启动(1)-CSDN博客 Centos7:Jenkinsgitlabnode项目启动(2) Centos7:Jenkinsgitlabnode项目启动(2)-CSDN博客 Centos7:Jenkinsgitlabnode项目启…...

starrocks集群fe/be节点进程守护脚本

自建starrocks集群,有时候服务会挂掉,无法自动拉起服务,于是采用supervisor进行进程守护。可能是版本的原因,supervisor程序总是异常,无法对fe//be进行守护。于是写了个简易脚本。 #!/bin/bash AppNameFecom.starrock…...

奇富科技跻身国际AI学术顶级会议ICASSP 2024,AI智能感知能力迈入新纪元

近日,2024年IEEE声学、语音与信号处理国际会议ICASSP 2024(2024 IEEE International Conference on Acoustics, Speech, and Signal Processing)宣布录用奇富科技关于语音情感计算的最新研究成果论文“MS-SENet: Enhancing Speech Emotion Re…...

如何在Android Termux中使用SFTP实现远程传输文件

文章目录 1. 安装openSSH2. 安装cpolar3. 远程SFTP连接配置4. 远程SFTP访问5. 配置固定远程连接地址6、结语 SFTP(SSH File Transfer Protocol)是一种基于SSH(Secure Shell)安全协议的文件传输协议。与FTP协议相比,SFT…...

高频知识汇总 | 【操作系统】面试题汇总(万字长博通俗易懂)

前言 这篇我亲手整理的【操作系统】资料,融入了我个人的理解。当初我在研习八股文时,深感复习时的困扰,网上资料虽多,却过于繁杂,有的甚至冗余。例如,文件管理这部分,在实际面试中很少涉及&…...

【前端框架】NPM概述及使用简介

什么是 NPM npm之于Node,就像pip之于Python,gem之于Ruby,composer之于PHP。 npm是Node官方提供的包管理工具,他已经成了Node包的标准发布平台,用于Node包的发布、传播、依赖控制。npm提供了命令行工具,使你可以方便地下载、安装、升级、删除包,也可以让你作为开发者发布…...

C# LINQ

一、前言 学习心得&#xff1a;C# 入门经典第8版书中的第22章《LINQ》 二、LINQ to XML 我们可以通过LINQ to XML来创造xml文件 如下示例&#xff0c;我们用LINQ to XML来创造。 <Books><CSharp Time"2019"><book>C# 入门经典</book><…...

云原生机器学习平台cube-studio开源项目及代码简要介绍

1. cube-studio介绍 云原生机器学习平台cube-studio介绍&#xff1a;https://juejin.cn/column/7084516480871563272 cube-studio是开源的云原生机器学习平台&#xff0c;目前包含特征平台&#xff0c;支持在/离线特征&#xff1b;数据源管理&#xff0c;支持结构数据和媒体标…...

大小端存储是什么鬼?

以下内容为本人的著作&#xff0c;如需要转载&#xff0c;请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/htYGddzO2xPl9kDN4lANpQ 大小端存储的划分是为了解决长度大于一个字节的数据类型内容在存储地址上以不同顺序分布的问题。 比如16位的short整形&…...

WEB:探索开源PDF.js技术应用

1、简述 PDF.js 是一个由 Mozilla 开发的开源 JavaScript 库&#xff0c;用于在浏览器中渲染 PDF 文档。它的目标是提供一个纯粹的前端解决方案&#xff0c;摆脱了依赖插件或外部程序的束缚&#xff0c;使得在任何支持 JavaScript 的浏览器中都可以轻松地显示 PDF 文档。 2、…...

数据分析之词云图绘制

试验任务概述&#xff1a;如下为所给CSDN博客信息表&#xff0c;分别汇总了ai, algo, big-data, blockchain, hardware, math, miniprog等7个标签的博客。对CSDN不同领域标签类别的博客内容进行词频统计&#xff0c;绘制词频统计图&#xff0c;并根据词频统计的结果绘制词云图。…...

Cursor Pro激活器技术深度解析:突破API限制的逆向工程实践

Cursor Pro激活器技术深度解析&#xff1a;突破API限制的逆向工程实践 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your…...

CANopen协议实战指南:从对象字典到PDO映射

1. CANopen协议入门&#xff1a;从零理解工业通信基石 第一次接触CANopen协议时&#xff0c;我被它复杂的术语和抽象的概念搞得晕头转向。直到在某个电机控制项目中被迫深入使用后&#xff0c;才发现这套协议设计得如此精妙。CANopen本质上是一种建立在CAN总线上的应用层协议&a…...

夏中谱加盟无界动力,助力具身智能发展

夏中谱入职无界动力&#xff0c;担重任开启新征程今日&#xff0c;无界动力宣布夏中谱正式加入&#xff0c;担任联合创始人兼联席CTO。这一任命使他全面负责基于世界模型的原生具身智能多模态大模型研发&#xff0c;以及数据闭环、云端仿真等核心技术基础设施的持续建设与升级。…...

FastbootEnhance:Windows平台上最直观的Android刷机工具箱

FastbootEnhance&#xff1a;Windows平台上最直观的Android刷机工具箱 【免费下载链接】FastbootEnhance A user-friendly Fastboot ToolBox & Payload Dumper for Windows 项目地址: https://gitcode.com/gh_mirrors/fa/FastbootEnhance 如果你是一位Android发烧友…...

Hasklig字体终极指南:多语言编程环境中的完美适配方案

Hasklig字体终极指南&#xff1a;多语言编程环境中的完美适配方案 【免费下载链接】Hasklig Hasklig - a code font with monospaced ligatures 项目地址: https://gitcode.com/gh_mirrors/ha/Hasklig Hasklig是一款专为程序员设计的等宽字体&#xff0c;通过智能连字技…...

从 99.8% 到 14.9%:Paperxie AI 降重,让论文 AIGC 焦虑彻底成为过去式

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AIPPThttps://www.paperxie.cn/weight?type1https://www.paperxie.cn/weight?type1 一、写在前面&#xff1a;被 AIGC 检测支配的论文焦虑&#xff0c;终于有解了 当知网、维普等平台全面升级 AIGC 检测…...

避开这些坑!海康威视嵌入式HR面常见‘送命题’与应答策略(附真实案例)

海康威视嵌入式HR面试避坑指南&#xff1a;6类高频"送命题"拆解与实战话术 在技术岗位的招聘流程中&#xff0c;HR面试往往是最容易被轻视却暗藏最多陷阱的环节。许多嵌入式开发者在技术面表现出色&#xff0c;却在看似轻松的HR面中意外折戟。通过对海康威视近三年嵌…...

从零开始学SCL:手把手教你实现天塔之光、数码管显示等工业控制案例(含避坑指南)

从零开始学SCL&#xff1a;手把手教你实现天塔之光、数码管显示等工业控制案例&#xff08;含避坑指南&#xff09; 工业自动化领域中&#xff0c;PLC编程是核心技能之一。而SCL&#xff08;Structured Control Language&#xff09;作为IEC 61131-3标准中的高级文本语言&#…...

Flash闪存技术

1 Mask ROM Cartridges: ROM卡带, Character ROM (CHR ROM) and the Program ROM (PRG ROM). Both of them are Mask ROM. SRAM or EEPROM: game status saving. Moto 6502: 6502 -> ST7 -> STM82 HDD Low-level formatting 低级格式化历史&#xff1a;HDD一个完整扇区包…...

告别SSH断连焦虑:用Tmux会话持久化拯救你的远程工作

远程开发者的救星&#xff1a;Tmux实战指南与高阶会话管理技巧 凌晨三点&#xff0c;服务器上的关键编译任务刚执行到一半&#xff0c;突然网络抖动导致SSH连接中断——这种令人抓狂的场景&#xff0c;每一位远程开发者都深有体会。传统终端会话的脆弱性让我们不得不反复重做工…...