21xrx.com
2024-11-21 20:00:36 Thursday
登录
文章检索 我的文章 写文章
OpenCV使用Python实现行人检测摄像头
2023-10-09 12:30:17 深夜i     --     --
OpenCV Python 行人检测 摄像头

OpenCV是一个开源的计算机视觉库,它提供了用于图像处理和分析的各种函数和算法。在本文中,我将介绍如何使用Python编程语言和OpenCV库来实现行人检测摄像头。

在开始之前,我们需要确保已经安装好了Python和OpenCV。你可以通过在命令行窗口中运行以下命令来检查它们是否已经安装成功:

python

python --version

pip show opencv-python

如果显示了Python和OpenCV的版本信息,那么说明已经安装正确。

接下来,我们要实现的是使用摄像头捕捉视频流,并对其中的行人进行检测。为此,我们需要创建一个Python脚本。

首先,我们需要导入必要的库:

python

import cv2

然后,我们可以通过以下方法来读取摄像头的视频流:

python

cap = cv2.VideoCapture(0)

这将捕捉到来自默认摄像头的视频流。

接下来,我们需要加载用于行人检测的训练模型。OpenCV提供了一个预先训练好的HOG+SVM模型,可以用来检测行人。

python

hog = cv2.HOGDescriptor()

hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())

然后,我们可以开始循环读取视频帧并对其进行行人检测:

python

while True:

  # 读取视频帧

  ret, frame = cap.read()

  # 如果无法读取到视频帧,就退出循环

  if not ret:

    break

  # 对视频帧进行行人检测

  boxes, weights = hog.detectMultiScale(frame, winStride=(4,4), padding=(8,8), scale=1.05)

  # 在视频帧上绘制检测到的行人矩形框

  for (x, y, w, h) in boxes:

    cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)

  # 显示视频帧

  cv2.imshow("Pedestrian Detection", frame)

  # 如果按下q键,就退出循环

  if cv2.waitKey(1) == ord('q'):

    break

# 释放资源

cap.release()

cv2.destroyAllWindows()

在上面的代码中,我们使用detectMultiScale()方法来对视频帧进行行人检测。该方法会返回一个矩形框列表,表示视频帧中检测到的行人位置。

最后,我们可以使用opencv的imshow()方法来显示视频帧,并使用waitKey()方法来等待用户按下键盘上的某个键。如果用户按下了q键,就会退出循环。

总结起来,本文介绍了如何使用Python和OpenCV库来实现行人检测摄像头。通过加载预先训练好的HOG+SVM模型,我们可以对视频帧进行行人检测,并在检测到的行人位置上绘制矩形框。这在很多应用领域中都非常有用,比如监控系统、智能交通等。希望本文对你学习和使用OpenCV有所帮助!

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复