YoloV5实时推理最短的代码

YoloV5实时推理最简单代码

import cv2
import torch# 加载YOLOv5模型
model = torch.hub.load('ultralytics/yolov5', 'yolov5s')# 使用CPU或GPU进行推理
device = 'cuda' if torch.cuda.is_available() else 'cpu'
model.to(device)# 打开摄像头(默认摄像头)
cap = cv2.VideoCapture(0)while True:# 读取摄像头帧ret, frame = cap.read()if not ret:break# 进行推理results = model(frame)# 获取检测结果的图像output_img = results.render()[0]# 显示图像cv2.imshow('YOLOv5', output_img)# 检测键盘输入,按 'q' 键退出循环if cv2.waitKey(1) & 0xFF == ord('q'):break# 释放摄像头并关闭窗口
cap.release()
cv2.destroyAllWindows()
  1. 导入必要的库:
    • cv2:OpenCV库,用于图像和视频处理。
    • torch:PyTorch库,用于加载和运行YOLOv5模型。
  2. 加载YOLOv5模型:
    • 使用torch.hub.load函数从指定的GitHub仓库 'ultralytics/yolov5' 中加载YOLOv5模型 'yolov5s'(小型版本)。模型将自动下载并加载。
  3. 确定推理设备:
    • 根据系统是否支持CUDA(GPU加速),选择在GPU(‘cuda’)或CPU(‘cpu’)上执行模型推理。
  4. 打开摄像头:
    • 使用cv2.VideoCapture打开默认的摄像头(通常是计算机内置摄像头或外部摄像头)。
  5. 进入主循环:
    • 使用while True创建一个无限循环,以连续地从摄像头获取帧并进行目标检测。
  6. 读取摄像头帧:
    • 使用cap.read()方法读取摄像头的下一帧图像。ret表示成功与否,frame包含捕获的图像。
  7. 进行推理:
    • 将读取的帧传递给YOLOv5模型进行目标检测,结果存储在results中。
  8. 获取检测结果的图像:
    • 使用results.render()方法获取包含检测框和标签的图像,这里使用索引 [0] 表示获取第一帧的检测结果。
  9. 显示图像:
    • 使用cv2.imshow()方法在名为’YOLOv5’的窗口中显示检测结果图像。
  10. 检测键盘输入:
    • 使用cv2.waitKey(1)检测键盘输入,等待1毫秒。如果按下键盘上的 ‘q’ 键(ASCII码为0x71),则退出循环。
  11. 释放摄像头并关闭窗口:
    • 在循环结束后,释放摄像头资源(cap.release())并关闭显示窗口(cv2.destroyAllWindows())。

在这里插入图片描述

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

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

相关文章

vue pc端/手机移动端 — 下载导出当前表格页面pdf格式

一、需求:在手机端/pc端实现一个表格页面(缴费单/体检报告单等)的导出功能,便于用户在本地浏览打印。 二、实现:之前在pc端做过预览打印的功能,使用的是print.js之类的方法让当前页面直接唤起打印机的打印预…

【好玩的开源项目】Docker部署cook菜谱工具

【好玩的开源项目】Docker部署cook菜谱工具 一、cook菜谱工具介绍二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本 四、下载cook镜像五、部署cook菜谱工具5.1 创建cook容器5.2 查看容器状态5.3 检查容器日志 六、…

Oracle is和as 关键字学习

之前写的Oracle存储过程中都有is和as关键字;下面学习这二个关键字; Oracle中is可用于以下情况: 判断某个值是否为null。在Oracle中,null表示一个未知或不适用的值。因此,我们需要使用is null或is not null语句来检查某…

OpenNebula的配置与应用

学习了OpenNebula的安装之后,接下来就是配置OpenNebula,内容包括配置Sunstone,VDC和集群,设置影像,模板管理,虚拟机管理等。OpenNebula还有大量的工作要做,这些工作主要来自映像、模板和虚拟机管…

Redis主从复制、哨兵、cluster集群

目录 Redis 主从复制 主从复制的作用 主从复制流程 搭建Redis 主从复制 实验环境 所有主机安装redis 修改 Redis 配置文件(Master节点操作) 修改 Redis 配置文件(Slave节点操作) 验证主从效果 Redis 哨兵模式 哨兵模式的…

算法通过村第十一关-位运算|黄金笔记|位运算压缩

文章目录 前言用4kb内存寻找重复元素总结 前言 提示:如果谁对你说了地狱般的话,就代表了他的心在地狱。你不需要相信那样的话,就算对方是你的父母也一样。 --高延秀《远看是蔚蓝的春天》 位运算有个很重要的作用就是能用比较小的空间存储比较…

思科:iOS和iOSXe软件存在漏洞

思科警告说,有人试图利用iOS软件和iOSXe软件中的一个安全缺陷,这些缺陷可能会让一个经过认证的远程攻击者在受影响的系统上实现远程代码执行。 中严重程度的脆弱性被追踪为 CVE-2023-20109 ,并以6.6分得分。它会影响启用Gdoi或G-Ikev2协议的软件的所有版本。 国际知名白帽黑客…

世界前沿技术发展报告2023《世界航天技术发展报告》(二)卫星技术

(二)卫星技术 1.概述2. 通信卫星2.1 美国太空发展局推进“国防太空体系架构”,持续部署“传输层”卫星2.2 美国军方在近地轨道成功演示验证星间激光通信2.3 DARPA启动“天基自适应通信节点”项目,为增强太空通信在轨互操作能力提供…

程序员的重复劳动陷阱

https://kb.cnblogs.com/page/627035/ 同样是一样的计算机专业毕业,进入职场的职位和工作都差不多,为何有些程序员短短几年就成长为全能选手或领域专家,有些程序员还在做CRUD? 程序员的重复劳动陷阱 不知道大家有没有这样的感觉…

2023年中国医疗传感器行业现状分析:市场国有化率低[图]

传感器是对物理刺激(如热、光、声、压力、磁或特定的运动)作出反应并传送产生的脉冲(如用于测量或操作控制)的装置。传感器一般由敏感元件、转换元件和转换电路组成。 医疗传感器分类 资料来源:共研产业咨询&#xff…

管道-有名管道

一、有名管道 有名管道与匿名管道的不同: 有名管道提供了一个路径名,并以FIFO的文件形式存在于文件系统中。与匿名管道不同,有名管道可以被不相关的进程使用,只要它们可以访问该路径,就能够通过有名管道进行通信。 FI…

基于SSM的学生事务处理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

MySQL 索引优化实践(单表)

目录 一、前言二、表数据准备三、常见业务无索引查询耗时测试3.1、通过订单ID / 订单编号 查询指定订单3.2、查询订单列表 四、订单常见业务索引优化实践4.1、通过唯一索引和普通索引优化通过订单编号查询订单信息4.2、通过普通联合索引优化订单列表查询4.2.1、分析查询字段的查…

GROMACS Tutorial 5: Protein-Ligand Complex 中文实战教程

GROMACS Tutorial 5: Protein-Ligand Complex 中文实战教程 前言系统环境特别强调一、预处理阶段1.1 蛋白质配体分离以及除水操作1.2 选择力场识别JZ4配体1.2.1 使用在线力场解析1.2.2 使用官方推荐力场CHARMM36解析 1.3 蛋白的top文件准备1.4 配体的top文件准备1.5 使用CgenFF…

【C++】模板初阶 -- 详解

一、泛型编程 // 实现一个通用的交换函数: void Swap(int& left, int& right) {int temp left;left right;right temp; }void Swap(double& left, double& right) {double temp left;left right;right temp; }void Swap(char& left, ch…

高層建築設計和建造:從避難層到設備間和防風防火防水的設計理念,酒店住宅辦公樓都有什麽房間(精簡)

樓層概覽 標準層居住、辦公、商業等功能的樓層。結構和裝修與其他樓層相同,可供人正常居住、工作和活動避難層專門用於人員避難的樓層,通常會相隔數十個標準層,樓梯通常和標準層是錯開的(非公用),具有更多的通風口。牆體和樓板具…

【Linux】TCP的服务端 + 客户端

文章目录 📖 前言1. 服务端基本结构1.1 类成员变量:1.2 头文件1.3 初始化:1.3 - 1 全双工与半双工1.3 - 2 inet_aton1.3 - 3 listen 2. 服务端运行接口2.1 accept:2.2 服务接口: 3. 客户端3.1 connect:3.2 …

linux 笔记 安装 anaconda

1 找到anaconda 安装包 Free Download | Anaconda 2 在linux环境中安装对应安装包 3 安装完毕后查看是否安装好 发现不行,需要配置环境变量 4 配置环境变量 vim /etc/profile使用这个,发现对应的文件是只读文件 sudo vim /etc/profile在最下面加一…

【数据结构与算法】- 数组

数组 1.1 数组的定义1.2 数组的创建1.3 数组在内存中的情况2.1 初始化数组2.2 插入元素2.3 删除元素2.4 读取元素2.5 遍历数组 1.1 数组的定义 数组中的是在内存中是连续存储的,内存是由一个个内存单元组成的,每一个内存单元都有自己的地址,…

【iptables 实战】05 iptables设置网络转发实验

一、网络架构 实验效果,通过机器B的转发功能,将机器A的报文转发到机器C 本实验准备三台机器分别配置如下网络 机器A ip:192.168.56.104 机器C ip:10.1.0.10 机器B 两张网卡,分别的ip是192.168.56.106和10.1.0.11 如图所示 如下图所示 二、…