GluonCV-物体检测教程-09.在网络摄像头上运行对象检测模型

本文介绍如何在MacOS环境下,利用预训练的SSD模型,通过Python和OpenCV实现实时网络摄像头对象检测。演示了从摄像头捕获视频流,进行图像预处理,通过神经网络进行对象检测,并在视频中显示检测结果的全过程。

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

本文将展示如何通过直接在您的网络摄像头视频流上运行预先训练的对象检测模型。

NOTE:

  • 本教程仅在MacOS环境中测试过
  • 需要的Python包:cv2,matplotlib
  • 你需要一个摄像头:)
  • 与matplotlib渲染兼容的Python,作为框架安装在MacOS中,请参阅此处的指南

加载模型和网络摄像头

准备好了吗?我们开始吧!首先,将必要的库导入python。

import time

import gluoncv as gcv
from gluoncv.utils import try_import_cv2
cv2 = try_import_cv2()
import mxnet as mx

在本教程中,我们使用ssd_512_mobilenet1.0_voc,这是一个快速的网络,具有良好的精度,在大多数笔记本电脑上应该远远高于每秒1帧。欢迎尝试一个不同的模式,从 Gluon Model Zoo

# Load the model
net = gcv.model_zoo.get_model('ssd_512_mobilenet1.0_voc', pretrained=True)
# Compile the model for faster speed
net.hybridize()

我们在opencv中创建网络摄像头处理程序,以便能够获取帧:

# Load the webcam handler
cap = cv2.VideoCapture(0)
time.sleep(1) ### letting the camera autofocus

检测回路

检测回路由四个阶段组成:

  • 加载网络摄像头帧
  • 图像预处理
  • 通过网络运行映像
  • 用预测结果更新输出
axes = None
NUM_FRAMES = 200 # you can change this
for i in range(NUM_FRAMES):
    # Load frame from the camera
    ret, frame = cap.read()

    # Image pre-processing
    frame = mx.nd.array(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)).astype('uint8')
    rgb_nd, frame = gcv.data.transforms.presets.ssd.transform_test(frame, short=512, max_size=700)

    # Run frame through network
    class_IDs, scores, bounding_boxes = net(rgb_nd)

    # Display the result
    img = gcv.utils.viz.cv_plot_bbox(frame, bounding_boxes[0], scores[0], class_IDs[0], class_names=net.classes)
    gcv.utils.viz.cv_plot_image(img)
    cv2.waitKey(1)

我们在退出脚本之前释放网络摄像头

cap.release()
cv2.destroyAllWindows()

结果

下载脚本以运行演示:

Download demo_webcam_run.py

在MacOS上使用pythonw运行脚本:

pythonw demo_webcam_run.py --num-frames 200

NOTE:在MacOS上,要启用matplotlib渲染,需要将python作为框架安装,请参见此处的指南

如果一切顺利,您应该能够从VOC数据集的可用类中检测对象。包括人、椅子和电视屏幕!

脚本的总运行时间:(0分0.000秒)

下载Python源码: demo_webcam.py

下载Jupyter notebook: demo_webcam.ipynb


原文链接:https://gluon-cv.mxnet.io/build/examples_detection/demo_webcam.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值