文章是在yolov5 v5.0版本的detect.py所修改编写

其他v1.0-v4.0没有试过,你们可以试试。

具体用法已经写在代码里面了。

import time
import cv2
import numpy as np
import torch
from models.experimental import attempt_load
from utils.datasets import letterbox
from utils.general import check_img_size, non_max_suppression,scale_coords, xyxy2xywh,set_logging,check_requirements
from utils.plots import colors, plot_one_box
from utils.torch_utils import select_device,time_synchronized@torch.no_grad()
def detect(#--------------------这里更改配置--------------------#---------------------------------------------------weights='runs/train/exp25/weights/best.pt',   #训练好的模型路径   (必改)imgsz=512,           #训练模型设置的尺寸 (必改)cap = 0,             #摄像头conf_thres=0.25,     #置信度iou_thres=0.45,      #NMS IOU 阈值max_det=1000,        #最大侦测的目标数device='',           #设备crop=True,           #显示预测框classes=None,        #种类agnostic_nms=False,  #class-agnostic NMSaugment=False,       #是否扩充推理half=False,          #使用FP16半精度推理hide_labels=False,   #是否隐藏标签hide_conf=False,     #是否隐藏置信度line_thickness=3     #预测框的线宽):# #--------------------这里更改配置--------------------#-----------------------------------------------------#打开摄像头cap = cv2.VideoCapture(cap)#-----初始化-----set_logging()#设置设备device = select_device(device)#CUDA仅支持半精度half &= device.type != 'cpu'  #-----加载模型-----#加载FP32模型model = attempt_load(weights, map_location=device)  #模型步幅stride = int(model.stride.max())  #检查图像大小imgsz = check_img_size(imgsz, s=stride)  #获取类名names = model.module.names if hasattr(model, 'module') else model.names  #toFP16if half:model.half()  #------运行推理------if device.type != 'cpu':model(torch.zeros(1, 3, imgsz, imgsz).to(device).type_as(next(model.parameters())))  # 跑一次#-----进入循环:ESC退出-----while(True):#设置labels--记录标签/概率/位置labels = []#计时t0 = time.time()ref,img0=cap.read()#填充调整大小img = letterbox(img0, imgsz, stride=stride)[0] # 转换img = img[:, :, ::-1].transpose(2, 0, 1)  #BGR to RGB, to 3x416x416img = np.ascontiguousarray(img)img = torch.from_numpy(img).to(device)#uint8 to fp16/32img = img.half() if half else img.float()  #0 - 255 to 0.0 - 1.0img /= 255.0  if img.ndimension() == 3:img = img.unsqueeze(0)# 推断t1 = time_synchronized()pred = model(img, augment=augment)[0]# 添加 NMSpred = non_max_suppression(pred, conf_thres, iou_thres, classes, agnostic_nms, max_det=max_det)t2 = time_synchronized()#目标进程for i, det in enumerate(pred):  # 每幅图像的检测率s, im0 = '', img0.copy()#输出字符串s += '%gx%g ' % img.shape[2:]  #归一化增益gn = torch.tensor(im0.shape)[[1, 0, 1, 0]]  if len(det):# 将框从img_大小重新缩放为im0大小det[:, :4] = scale_coords(img.shape[2:], det[:, :4], im0.shape).round()# 输出结果for c in det[:, -1].unique():#每类检测数n = (det[:, -1] == c).sum()#添加到字符串  s += f"{n} {names[int(c)]}{'s' * (n > 1)}, "  # 结果输出for *xyxy, conf, cls in reversed(det):#归一化xywhxywh = (xyxy2xywh(torch.tensor(xyxy).view(1, 4)) / gn).view(-1).tolist()  #标签格式line = (cls, *xywh, conf)  #整数类c = int(cls)  #建立标签label = None if hide_labels else (names[c] if hide_conf else f'{names[c]} {conf:.2f}')#绘画预测框if crop:    plot_one_box(xyxy, im0, label=label, color=colors(c, True), line_thickness=line_thickness)#记录标签/概率/位置labels.append([names[c],conf,xyxy])#--------------------这里写/修改代码--------------------#-------------------------------------------------'''labels里面有该图片的标签/概率/坐标(列表)labels = [ [列表0] , [列表1] , [列表3] ,......]其中 列表 = [标签,概率,坐标]例如获取第一个预测框的概率值:print( float( labels[0][1])  )'''# 显示图片cv2.imshow("666",im0)#输出计算时间print(f'消耗时间: ({time.time() - t0:.3f}s)')key = cv2.waitKey(20)  #这里设置ESC退出if key == 27:break#--------------------END--------------------#-------------------------------------------------cv2.destroyAllWindows()if __name__ == "__main__":'''修改配置在 13-28 行写代码-显示输出/获取预测框位置/获取预测概率值 在121-END行'''#检测安装包--建议注释掉#check_requirements(exclude=('tensorboard', 'thop'))#运行detect()

经研究发现,yolov5-master有time_synchronized 和 time_sync 两种名字,所以如果time_synchronized报错,麻烦换成time_sync

yolov5 调用 usb 摄像头相关推荐

  1. 五十、opencv调用USB摄像头并保存图片

    @Author: Runsen opencv OpenCV是计算机视觉的一个模块. OpenCV可以通过图像处理减少图像噪声,调整图像亮度.颜色或者对比度等等.想要进一步系统了解OpenCV图像处理基 ...

  2. AndroidUSBCamera调用USB摄像头问题

    UVC_ERROR_INVALID_DEVICE not open camera:err=-50 由于客户需求,笔者最近在测试大型android平板设备,但是所使用的厂商提供的设备并未继承前后置摄像头 ...

  3. C#调用usb摄像头的实现方法

    1.下载aforge类库,下载地址:,我下载的版本是:aforge.net framework-2.2.5.exe: 2.下载安装好后,将下载类库中的release文件夹复制到c#项目的可执行文件文件 ...

  4. ubuntu上python使用opencv调用usb摄像头无故掉线以后重连摄像头。

    项目中使用opencv调用usb摄像头,运行过程中,会出现摄像头掉线的情况.猜测掉线原因是硬件相关,可能是摄像头,也可能是usb线和端口. 这里主要介绍两种掉线情况以及代码重连摄像头的方式. 1.第一 ...

  5. C++中调用usb摄像头并保存图片【学习记录第1篇】

    [学习记录第1篇]C++中通过OPENCV调用usb摄像头并保存图片 准备 外置USB摄像头代码 外置USB摄像头运行结果 外置USB超声波探头代码 外置USB超声波探头运行结果 第一篇博客的感想 准 ...

  6. C# 调用USB摄像头

    目录 C#调用USB摄像头使用AForge类库进行开发 1.AForge安装 2.下载完毕后进行USB摄像头类封装 C#调用USB摄像头使用AForge类库进行开发 1.AForge安装 右击工程,在 ...

  7. 讯为iTOP4412开发板ARM-linux 使用OPENCV调用USB摄像头

    讯为iTOP4412开发板ARM-linux 使用OPENCV调用USB摄像头 首先要在内核里面确定有添加USB摄像头的驱动,这个在讯为官方文档里面有所以就不展开讲了. 主要问题是如何让opencv能 ...

  8. Jetson NX YOLOV目标检测学习笔记1----CV调用USB摄像头

    1.相关的包安装(安装步骤自行百度) python 版本3.6.9 pip3 install opencv-python=='xxxx' 其中xxx为对应版本号(注意:opencv我用到的版本是ope ...

  9. YOLOv5调用IP摄像头

    本文将展示IP摄像头的调用方法(以调用手机摄像头为例). 实现 首先在手机端下载可以联网调用手机摄像头的APP 我用的是这个 勾选RTSP,点击分享 记下局域网地址,后面代码中需要对应修改 更改det ...

最新文章

  1. Moving Towards Third‐Generation Sequencing Technologies 迈向第三代测序技术
  2. Python Numpy多维数组.sum(axis=0/1/2...) 详解
  3. 信息处理进入了计算机领域,信 息 处 理 进 入 了 计 算 机 领 域 ,实 质 是 进 入 了()的 领 域 。...
  4. python 中使用 global 引发了莫名其妙的问题
  5. 5大食物千万别挑太艳的
  6. Qt Creator预览版
  7. 单页应用程序的Spring Boot静态Web资源处理
  8. Tomcat 配置 login 和 gas
  9. Google 正式开源 Jib ,帮助 Java 应用快速容器化
  10. 北航教授吐槽研究生基本废了:985高校成高级蓝翔
  11. 【C++】C++标准中定义的名字和标识符
  12. ES6 中 class 和 extends 的es5实现
  13. 深度学习中的梯度下降算法
  14. Linux 根据服务名字找安装路径
  15. Triplet Loss
  16. android 歌词的显示不出来,网易云音乐歌词不显示怎么办 网易云显示不出歌词的解决方法...
  17. 三菱PLC自带FIFO操作指令编程应用
  18. 在linux系统上搭建测试环境
  19. 超千万人同时在线,抖音快手,是怎么抗住高并发?
  20. 超级!超级!超级好用的视频标注工具

热门文章

  1. 使用matplotlib绘制3D立方体图
  2. 联想E480被锁频到0.89Ghz解决办法
  3. 各界名人参观著名画家赵准旺个展的感言
  4. CentOS 怎么使虚拟机联网?红帽linux
  5. 卡塞格林光学系统_改进型卡塞格林光学系统的设计_张磊
  6. Vim编辑器中的复制和全选复制
  7. 嵌入式行业里面的应用驱动硬件工程师对比
  8. 基于java的在线考试系统
  9. react项目实战-好客租房
  10. linux ssh iphone,在iPhone上使用命令行命令以及通过ssh连接iPhone