21xrx.com
2024-11-21 19:35:14 Thursday
登录
文章检索 我的文章 写文章
OpenCV行人检测摄像头Python实现
2023-08-15 16:20:20 深夜i     --     --
OpenCV 行人检测 摄像头 Python 实现

行人检测是计算机视觉中的一项重要任务,它在许多领域中都有广泛的应用,例如交通监控、安防系统等。OpenCV是一个广泛使用的计算机视觉库,提供了丰富的函数和工具来实现各种视觉任务。本文将介绍如何使用OpenCV实现行人检测摄像头的功能。

首先,我们需要安装OpenCV库。在Python环境中,可以通过pip命令来安装OpenCV。打开命令行终端,输入以下命令:


pip install opencv-python

等待安装完成后,我们就可以开始编写代码了。

首先,导入必要的库:

python

import cv2

接下来,创建一个VideoCapture对象,用于从摄像头读取视频流:

python

cap = cv2.VideoCapture(0)

在这里,参数0代表系统默认的摄像头。如果有多个摄像头可以选择,可以修改参数来选择不同的摄像头。

接下来,我们需要加载OpenCV提供的行人检测模型。OpenCV提供了一个已经经过训练的Haar级联分类器模型,可以用于行人检测。该模型需要先下载并保存到本地,然后通过cv2.CascadeClassifier来加载:

python

cascade = cv2.CascadeClassifier("haarcascade_fullbody.xml")

接下来,我们循环读取视频流的每一帧,进行行人检测:

python

while True:

  # 读取一帧

  ret, frame = cap.read()

  # 将帧转换为灰度图像

  gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

  # 行人检测

  pedestrians = cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

  # 在图像中绘制检测到的行人框

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

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

  # 显示结果

  cv2.imshow("Pedestrian Detection", frame)

  # 按下ESC键退出

  if cv2.waitKey(1) == 27:

    break

在这里,我们使用cv2.CascadeClassifier中的detectMultiScale函数来检测行人。该函数会返回一个包含每个行人框的列表,我们可以通过循环来绘制框在图像上。

最后,我们使用cv2.imshow来显示图像,并通过cv2.waitKey来检测是否按下了ESC键,如果按下,则跳出循环,退出程序。

完成以上步骤后,我们就可以运行代码了。运行后,会自动打开摄像头,并进行实时的行人检测。检测到的行人会用矩形框标记出来,实时显示在屏幕上。

通过本文的介绍,我们学习了如何使用OpenCV库来实现行人检测摄像头的功能。这只是OpenCV的一个基本应用,OpenCV还提供了许多其他功能,可以应用于更复杂的场景和任务。希望本文能够帮助读者入门OpenCV,并进一步深入学习计算机视觉技术。

  
  

评论区

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