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

YOLO11追踪简单应用

准备工作,需要下载一下yolo模型,我这里用的时yolo11,下载链接Ultralytics YOLO11 - Ultralytics YOLO 文档

将上面的文件放到文件夹里,并用vscode打开,为该项目创建自己的虚拟环境 crtl+shift+p

选择刚才创建的虚拟环境,进入终端安装所需要的包

pip install torch torchvision torchaudio
pip install ultralytics
pip install opencv-python
pip install pyautogui
pip install lap>=0.5.12

新建一个track.py文件对视频进行抽帧处理

import cv2 as cv
from ultralytics import YOLO
from time import sleep
rec = cv.VideoCapture('rec.mp4')
i=0
while True:r,f = rec.read()if not r:print('没有更多的帧了')breakif cv.waitKey(1)==ord('q'):print('您按了q键')break#实际操作i += 1if i % 25 == 0:cv.imwrite(f'{i}.jpg',f)rec.release()
cv.destroyAllWindows()

对抽帧的图片进行统一改名,改名网址Rename - 批量文件重命名工具

对图片进行标注 详细步骤看https://blog.csdn.net/qq_64556701/article/details/153980803?fromshare=blogdetail&sharetype=blogdetail&sharerId=153980803&sharerefer=PC&sharesource=qq_64556701&sharefrom=from_link

标注完成,将其分为训练集和验证集,其中(images和labels文件名不要进行修改)

创建shu.yaml,指定训练和验证集的目录

train: datasets/shu/images/train
val: datasets/shu/images/val
names:0: shu

创建train.py进行训练

from ultralytics import YOLO
yolo = YOLO('yolo11n.pt')
yolo.train(data='shu.yaml',workers=0,epochs=300,batch=16)

使用训练好的模型进行追踪

import cv2 as cv
from ultralytics import YOLO
import pyautogui as pg
import numpy as np
yolo = YOLO('shu.pt')while True:if cv.waitKey(1) == ord('q'):breakshot = pg.screenshot()shot_np = np.array(shot)shot_np = shot_np[:,:,::-1]result = yolo.track(shot_np,persist=True)for i in result[0].boxes.xywh:pos = (i[0],i[1])pg.click(pos)cv.waitKey(0)
cv.destroyAllWindows()

中间有延时,可能会导致有多个地鼠时,会来不及,可以进行下面优化,提高准确性能

import cv2 as cv
from ultralytics import YOLO
import pyautogui as pg
import numpy as np
import timeyolo = YOLO('shu.pt')
pg.FAILSAFE = False  # 禁用安全退出,提高点击速度
pg.PAUSE = 0  # 移除pyautogui的默认延迟# 设置鼠标移动参数
pg.MINIMUM_DURATION = 0
pg.MINIMUM_SLEEP = 0while True:if cv.waitKey(1) == ord('q'):breakstart_time = time.time()# 截图shot = pg.screenshot()shot_np = np.array(shot)shot_np = shot_np[:,:,::-1]# 推理检测result = yolo.track(shot_np, persist=True)# 批量处理所有检测到的地鼠if result[0].boxes is not None and len(result[0].boxes) > 0:# 获取所有地鼠中心坐标positions = []for i in result[0].boxes.xywh:x, y = int(i[0]), int(i[1])positions.append((x, y))# 快速点击所有检测到的位置for pos in positions:# 直接移动并点击,不添加延迟pg.moveTo(pos[0], pos[1], duration=0)pg.click()# 控制帧率,避免过度占用CPUelapsed = time.time() - start_timeif elapsed < 0.05:  # 最小20FPStime.sleep(0.05 - elapsed)cv.destroyAllWindows()

http://www.dtcms.com/a/540001.html

相关文章:

  • Spring Web MVC 入门秘籍:从概念到实践的快速通道(上)
  • 网站是什么字体企业内网模板
  • 建一个小型购物网站要有服务器网易博客搬家wordpress
  • 申威服务器安装Nacos 2.0.3 RPM包详细步骤(Kylin V10 sw_64架构)​附安装包
  • 当同一个弹性云服务器所在子网同时设置了snat和弹性公网IP时,会优先使用哪个
  • 基于Chrome140的TK账号自动化(关键词浏览)——需求分析环境搭建(一)
  • 如何自建内网穿透(FRP)服务器
  • 服务器上用Slurm 管理训练bash 脚本任务
  • SpringBoot入门,第一个SpringBoot的创建
  • Spring AOP核心原理分析
  • HTTPS 错误排查实战,从握手到应用层的工程化流程
  • 基于ASP身份认证服务器实现远程办公VPN双因素认证的架构与实践
  • 服务器会遭受到哪些网络攻击
  • 网站设计制作软件江门自助建站模板
  • 滨州做网站推广h5制作方法
  • KTM5800——30bit 绝对角度细分器支持最多 4096 对极与一键非线性自校准集成双 16bit 2M SAR ADC,可替代TW29
  • 局域网网站制作保定哪有做网站的
  • 基于LPJ模型的植被NPP模拟、驱动力分析及其气候变化响应预测
  • 人脸识别4-Windows下基于MSVC编译SeetaFace6
  • 【AES加密】AES加密算法流程全解析
  • 5.1.4 大数据方法论与实践指南-主流湖仓一体商业化解决方案
  • 【数据库】异构多活+双轨并行:浙人医基于金仓KFS实现数据库信创平滑升级
  • Python实用装饰器提升开发效率
  • 【JAVA 进阶】Mybatis-Plus 实战使用与最佳实践
  • LangGraph 官方教程:聊天机器人之五
  • 天硕工业SSD揭秘无DRAM缓存SSD的性能差距
  • C# 内存是绝对自动清理吗?
  • 在 CentOS 系统上实现定时执行 Python 邮件发送任务完整指南
  • C#操作Excel
  • 放置在网站根目录下中国做外贸最好的网站有哪些