yolo8摄像头实时检测(可修改识别边框)

该代码示例展示了如何在预配置的环境中利用YOLOv8模型进行实时对象检测。通过CV2库读取和处理摄像头视频流,利用YOLOv8m.pt模型进行识别,用Supervision库标注检测到的物体并显示在视频帧上。用户可以通过按Esc键退出程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提前配置好yolo8的虚拟环境,同时补充安装包    supervision

#开  发  者 :刘 海 超
#开 发 时 间:2023-05-18 14:20
import cv2
import supervision as sv
from ultralytics import YOLO


def main():
    # 保存视频
    writer = cv2.VideoWriter('webcam_yolo.mp4',
                             cv2.VideoWriter_fourcc(*'mp4v'),
                             7,
                             (1280, 720))

    # define resolution
    cap = cv2.VideoCapture(0)
    cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
    cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)

    # specify the model
    model = YOLO("yolov8m.pt")

    # 自定义边框
    box_annotator = sv.BoxAnnotator(
        thickness=2,
        text_thickness=2,
        text_scale=1
    )

    while True:
        ret, frame = cap.read()
        result = model(frame, agnostic_nms=True)[0]
        detections = sv.Detections.from_yolov8(result)
        labels = [
            f"{model.model.names[class_id]} {confidence:0.2f}"
            for _, _, confidence, class_id,_
            in detections
        ]
        frame = box_annotator.annotate(
            scene=frame,
            detections=detections,
            labels=labels
        )

        writer.write(frame)

        cv2.imshow("yolov8", frame)

        if (cv2.waitKey(30) == 27):  # break with escape key
            break

    cap.release()
    writer.release()
    cv2.destroyAllWindows()


if __name__ == "__main__":
    main()

当前的信息集中并未提供有关YOLOv11的具体资料或说明,而仅存在关于YOLOv8的相关描述[^1]。值得注意的是,在公开资源和学术界中尚未有YOLOv11这一版本的正式发布记录。因此,对于YOLOv11的讨论可能基于假设或是误解。 针对已有的YOLO系列模型,特别是YOLOv8,实现摄像头实时物体检测通常涉及以下几个方面: ### 准备工作 安装必要的依赖库并下载预训练好的YOLOv8权重文件以及配置文件。这可以通过访问官方仓库来完成,确保遵循最新的文档指南进行设置[^2]。 ### 实现摄像头实时检测 为了利用YOLOv8执行来自摄像头输入流的对象识别任务,Python编程语言提供了简便的方法。下面是一个简单的例子展示如何读取视频帧并通过YOLOv8模型处理每一帧图像以获得检测结果: ```python import cv2 from ultralytics import YOLO model = YOLO('path/to/yolov8.weights') # 加载YOLOv8模型路径 cap = cv2.VideoCapture(0) while cap.isOpened(): ret, frame = cap.read() if not ret: break results = model(frame) # 对单张图片做推理得到的结果列表 annotated_frame = results[0].plot() # 可视化标注后的图像 cv2.imshow("YOLOv8 Detection", annotated_frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows() ``` 此段代码展示了打开默认摄像设备(索引为`0`),循环读取每帧画面,并调用加载完毕的YOLOv8实例对其进行分析的过程。最后,程序会显示带有边框标记的目标对象于窗口内直到按下键盘上的'q'键退出循环停止运行。 由于不存在名为YOLOv11的确切版本,上述指导适用于最新发布的YOLO变体——即YOLOv8。如果未来确实出现了新的迭代版本,则建议参照相应版本提供的官方教程更新这部分内容。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值