【学习记录】利用YOLO-World与OpenCV实现高效视频实时目标检测

部署运行你感兴趣的模型镜像

📌 摘要

本文记录了使用 YOLO-World 模型结合 OpenCV 实现对视频流的实时目标检测的过程。针对使用 results[0].show() 显示图像时窗口频繁弹出导致卡顿的问题,进行了代码优化,改用 OpenCV 显示图像以提升性能与用户体验。

文章包含完整实现代码、关键逻辑解释以及实际运行效果展示,适用于初学者和有一定基础的 AI 开发者。


🎯 实现目的

在使用 Ultralytics 提供的 YOLO-World 模型进行视频目标检测时,发现官方接口中 results[0].show() 方法会不断弹出新的图像窗口,严重影响程序流畅度,甚至导致电脑卡顿。

因此,本文通过集成 OpenCV(cv2) 实现视频帧的统一显示,达到稳定、高效地展示检测结果的目的。


🛠️ 环境准备

确保你已安装以下依赖库:

pip install ultralytics opencv-python

模型文件:yolov8s-world.pt 可从 Ultralytics 官方仓库获取或自动下载。


🧩 核心代码解析

import datetime
import cv2
from ultralytics import YOLOWorld

# 加载YOLOWorld模型
model = YOLOWorld('yolov8s-world.pt')

resize_width = 1920
resize_height = 1080


def main():
    # 设置跳帧处理(提高性能)
    skip_frames = 2
    frame_count = 0
    
    # 打开摄像头(可以替换为视频路径)
    cap = cv2.VideoCapture(0)

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

        frame_count += 1
        if frame_count % skip_frames != 0:
            continue  # 跳过部分帧以减少计算压力

        # 模型预测
        results = model.predict(frame, conf=0.1, save_txt=False)

        for result in results:
            img = result.plot(line_width=2, font_size=24)  # 绘制检测框和标签

            # 图像缩放(适配屏幕)
            img = cv2.resize(img, (resize_width, resize_height))

            # 添加时间水印
            cv2.putText(img, f"{datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}",
                        (10, 20),
                        cv2.FONT_HERSHEY_PLAIN, 1, (0, 0, 255), 2)

            # 使用OpenCV显示结果
            cv2.imshow("video", img)
            if cv2.waitKey(1) & 0xFF == ord('q'):
                break

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


if __name__ == '__main__':
    main()

🔧 关键改进点

改进点描述
使用 OpenCV 显示画面避免多个窗口弹出,提升稳定性
增加跳帧机制减少每秒处理帧数,降低CPU/GPU负载
添加时间戳水印方便调试和记录检测时间
图像分辨率自定义更好适配不同显示器

额外提示:可通过 model.set_classes(["person", "cat"]) 设置只识别特定类别,进一步提升效率。


📷 运行效果展示

在这里插入图片描述


🚀 扩展建议

  • 将检测结果保存为视频文件(使用 cv2.VideoWriter
  • 部署到树莓派或其他嵌入式设备上实现实时监控
  • 接入 RTSP 流媒体地址进行远程视频分析
  • 结合 Flask 或 FastAPI 构建 Web 检测服务

✅ 总结

本文通过将 YOLO-World 与 OpenCV 结合,实现了高效的视频目标检测流程。解决了原生 results.show() 方法带来的卡顿问题,提升了应用的实用性和用户体验。

如果你正在尝试搭建自己的实时检测系统,不妨参考本方案进行优化实践。


📌 如果你觉得这篇文章对你有帮助,请点赞 + 收藏 + 分享,让更多人了解如何用 YOLO-World 和 OpenCV 做实时目标检测!

💬 欢迎留言讨论你在部署过程中遇到的问题或优化建议。

您可能感兴趣的与本文相关的镜像

Yolo-v8.3

Yolo-v8.3

Yolo

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的Joseph Redmon 和Ali Farhadi 开发。 YOLO 于2015 年推出,因其高速和高精度而广受欢迎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

行云流水剑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值