python:本机摄像头目标检测实时推理(使用YOLOv8n模型)

本文将介绍如何使用本机摄像头进行目标检测实时推理的python代码。



一、下载YOLO权重文件

https://github.com/ultralytics/ultralytics?tab=readme-ov-file

拉到网页最下面,选择适合的模型,下载到本地。
在这里插入图片描述

二、环境配置

安装以下两个库,

pip install ultralytics
pip install opencv-python

三、完整代码

将yolov8n.pt保存在代码的同级目录下,当然你可以保存在任何地方,只需修改权重文件路径即可。

import cv2
from ultralytics import YOLO
import datetime

# 加载YOLOv8模型
model = YOLO('./yolov8n.pt')

# 打开默认摄像头 (设备索引为 0)
cap = cv2.VideoCapture(0)

# 检查摄像头是否成功打开
if not cap.isOpened():
    print("无法打开摄像头")
    exit()

while True:
    # 读取摄像头的每一帧
    ret, frame = cap.read()

    # 如果读取帧失败,则退出循环
    if not ret:
        print("无法接收帧(可能是摄像头断开)")
        break

    # 使用YOLOv8进行检测
    results = model(frame)

    # 解析结果并绘制检测框
    for result in results:
        boxes = result.boxes
        for box in boxes:
            x1, y1, x2, y2 = map(int, box.xyxy[0])  # 获取检测框坐标
            confidence = box.conf[0]  # 获取置信度
            cls = int(box.cls[0])  # 获取类别
            label = model.names[cls]  # 获取类别名称

            # 绘制检测框和标签
            cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)
            cv2.putText(frame, f"{label} {confidence:.2f}", (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)

    # 获取当前时间
    now = datetime.datetime.now()
    time_str = now.strftime("%Y-%m-%d %H:%M:%S")
    cv2.putText(frame, time_str, (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2, cv2.LINE_AA)

    # 显示当前帧
    cv2.imshow('Camera', frame)

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

# 释放摄像头并关闭窗口
cap.release()
cv2.destroyAllWindows()

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 05:24:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 05:24:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 05:24:01       45 阅读
  4. Python语言-面向对象

    2024-07-21 05:24:01       55 阅读

热门阅读

  1. 【19】成绩计算

    2024-07-21 05:24:01       14 阅读
  2. 开源的语音合成工具_ChatTTS_用法及资源

    2024-07-21 05:24:01       19 阅读
  3. C++基础入门(一)(命名空间,输入输出,缺省参数)

    2024-07-21 05:24:01       15 阅读
  4. python中使用openpyxl库写一个简单的表格

    2024-07-21 05:24:01       13 阅读
  5. Spring Boot外部配置加载顺序

    2024-07-21 05:24:01       18 阅读
  6. 【前后端联调】MethodArgumentNotValidException

    2024-07-21 05:24:01       16 阅读
  7. Vue的自定义事件:组件间通讯的艺术

    2024-07-21 05:24:01       16 阅读
  8. Spring中存储Bean的相关注解及用法

    2024-07-21 05:24:01       18 阅读
  9. Perl中的时间机器:探索文件系统同步机制

    2024-07-21 05:24:01       17 阅读
  10. Perl异步编程新纪元:非阻塞I/O的魔力

    2024-07-21 05:24:01       19 阅读
  11. Perl线程调度优化:掌握线程优先级的艺术

    2024-07-21 05:24:01       14 阅读
  12. 渗透测试过程中如何做好个人防护?

    2024-07-21 05:24:01       21 阅读
  13. [ptrade交易实战] 第十七篇 期货交易类函数!

    2024-07-21 05:24:01       22 阅读
  14. 【C++11】initializer_list、可变参数模板详解

    2024-07-21 05:24:01       22 阅读