yolo5图片视频、摄像头推理demo

yolo5图片、视频推理demo

图片

python 复制代码
import torch

# 加载预训练模型
model = torch.hub.load('./yolo5', 'custom', path='yolov5s.pt', source='local')

# 加载图片
img = '1.jpg'

# 进行推理
results = model(img)

# 解析结果
detections = results.xyxy[0].cpu().numpy()  # [x1, y1, x2, y2, confidence, class]

# 输出结果
for detection in detections:
    x1, y1, x2, y2, confidence, cls = detection
    print(f"Class: {model.names[int(cls)]}, Confidence: {confidence:.2f}, Box: [{x1}, {y1}, {x2}, {y2}]")

# 显示结果
results.show()

视频

python 复制代码
import cv2
import torch

# 加载预训练模型
model = torch.hub.load('../yolo5', 'custom', path='yolov5s.pt', source='local')

# 加载视频
video_path = '1.mp4'
cap = cv2.VideoCapture(video_path)

# 获取视频的宽度、高度和帧率
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = cap.get(cv2.CAP_PROP_FPS)

# 定义视频写入对象
output_path = 'output_video.mp4'
fourcc = cv2.VideoWriter_fourcc(*'mp4v')  # 编码格式
out = cv2.VideoWriter(output_path, fourcc, fps, (width, height))

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break

    # 将帧转换为RGB格式
    img_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

    # 进行推理
    results = model(img_rgb)

    # 解析结果
    detections = results.xyxy[0].cpu().numpy()  # [x1, y1, x2, y2, confidence, class]

    # 在帧上绘制检测结果并打印坐标
    for detection in detections:
        x1, y1, x2, y2, confidence, cls = detection
        label = f"{model.names[int(cls)]} {confidence:.2f}"
        cv2.rectangle(frame, (int(x1), int(y1)), (int(x2), int(y2)), (255, 0, 0), 2)
        cv2.putText(frame, label, (int(x1), int(y1) - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (255, 0, 0), 2)

        # 打印目标的坐标和类别
        print(f"Class: {model.names[int(cls)]}, Confidence: {confidence:.2f}, Box: [{x1}, {y1}, {x2}, {y2}]")

    # 显示结果
    cv2.imshow('YOLOv5 Detection', frame)

    # 写入帧到输出视频
    out.write(frame)

    # 按 'q' 键退出实时显示
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 释放资源
cap.release()
out.release()
cv2.destroyAllWindows()

摄像头

bash 复制代码
import torch
import cv2
import numpy as np
import time

# 加载预训练模型
model = torch.hub.load('../yolov5-master', 'custom', path='yolo_test/yolo_test-gpu7/weights/best.pt', source='local')


# 打开摄像头
cap = cv2.VideoCapture(0)

# 检查摄像头是否成功打开
if not cap.isOpened():
    print("Error: Could not open video.")
    exit()

# 初始化计时器
prev_time = time.time()

# 进行实时检测
while True:
    # 读取摄像头帧
    ret, frame = cap.read()
    if not ret:
        print("Error: Failed to capture image")
        break

    # 将帧转换为YOLOv5模型需要的格式
    results = model(frame)

    # 解析结果
    detections = results.xyxy[0].cpu().numpy()  # [x1, y1, x2, y2, confidence, class]

    # 在帧上绘制检测结果
    for detection in detections:
        x1, y1, x2, y2, confidence, cls = detection
        label = f"{model.names[int(cls)]} {confidence:.2f}"
        cv2.rectangle(frame, (int(x1), int(y1)), (int(x2), int(y2)), (0, 255, 0), 2)
        cv2.putText(frame, label, (int(x1), int(y1) - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (36, 255, 12), 2)

    # 计算并显示帧率
    current_time = time.time()
    fps = 1 / (current_time - prev_time)
    prev_time = current_time
    cv2.putText(frame, f"FPS: {fps:.2f}", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0), 2)

    # 显示结果
    cv2.imshow('YOLOv5 Real-Time Detection', frame)

    # 按 'q' 键退出循环
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 释放摄像头并关闭所有窗口
cap.release()
cv2.destroyAllWindows()
相关推荐
yy我不解释9 分钟前
关于comfyui的mmaudio音频生成插件时时间不一致问题(一)
python·ai作画·音视频·comfyui
Sendingab3 小时前
2026 年 AI 数字人口播新趋势:智能体 Agent 将如何重构短视频内容生产与营销
人工智能·重构·音视频
郭泽斌之心4 小时前
Fay数字人视频播放器
音视频
愚公搬代码7 小时前
【愚公系列】《剪映+DeepSeek+即梦:短视频制作》015-特效:轻松提升视频质感(特效的应用)
音视频
EasyDSS13 小时前
RTMP高清推流直播/视频转码EasyDSS在无人机RTMP直播场景中的应用技术解析
ffmpeg·音视频·无人机·视频转码·语音转写·点播技术
EasyGBS14 小时前
场景化落地指南:国标GB28181视频分析EasyGBS视频质量诊断在5大行业的实战应用
音视频·国标gb28181·视频质量诊断·花屏检测
码农xo14 小时前
android 设备实时传输相机采集的视频到电脑pc端 通过内网wifi 方案
android·数码相机·音视频
2502_9116791414 小时前
产线音频测试的性价比之选:APx515B音频分析仪深度解读
音视频
qq_3168377515 小时前
华为obs 私有桶 音频 使用uniapp 安卓端播放-99的问题
uni-app·音视频
EasyGBS1 天前
国标GB28181视频分析平台EasyGBS视频质量诊断让监控故障“可防可控可溯源“
人工智能·音视频·gb28181·视频质量诊断