使用 OpenCV 进行视频中的行人检测

server/2024/11/26 15:15:17/

在计算机视觉领域,行人检测是一个重要的研究方向,它在视频监控、自动驾驶、人机交互等领域都有着广泛的应用。本文将介绍如何使用 OpenCV 库来实现视频中的行人检测。

环境准备

首先,我们需要安装 OpenCV 库。可以通过以下命令来安装:

pip install opencv-python

代码实现

以下是实现视频中行人检测的代码:

import cv2
import os
import numpy as np
import timedef detect_people():current_dir = os.path.dirname(os.path.abspath(__file__))video_path = os.path.join(current_dir, 'walk2.mp4')if not os.path.exists(video_path):print(f"Error: 视频文件不存在,请确认文件路径: {video_path}")return# 创建HOG检测器hog = cv2.HOGDescriptor()hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())cap = cv2.VideoCapture(video_path)if not cap.isOpened():print("Error: 无法打开视频文件")return# 设置视频捕获的分辨率cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)# 用于控制检测频率frame_count = 0detection_interval = 3  # 每隔3帧进行一次检测last_boxes = []while True:start_time = time.time()ret, frame = cap.read()if not ret:break# 降低分辨率frame = cv2.resize(frame, (640, 480))# 每隔几帧进行一次检测if frame_count % detection_interval == 0:# 检测人boxes, weights = hog.detectMultiScale(frame, winStride=(8, 8),padding=(4, 4),scale=1.1)last_boxes = boxeselse:boxes = last_boxes# 在图像上绘制边界框for (x, y, w, h) in boxes:cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)# 显示人数people_count = len(boxes)cv2.putText(frame, f'People Count: {people_count}', (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)# 计算和显示FPSfps = 1.0 / (time.time() - start_time)cv2.putText(frame, f'FPS: {int(fps)}', (10, 60), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)# 显示结果cv2.imshow('People Detection', frame)frame_count += 1# 减小等待时间,提高帧率if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()cv2.destroyAllWindows()if __name__ == '__main__':detect_people()

 

 


http://www.ppmy.cn/server/145093.html

相关文章

react 中解决 类型“never”上不存在属性“value”。

在 React 中,当你使用 useState 钩子来管理状态时,TypeScript 会尝试推断你的状态变量的类型。在你的例子中,listchannel 被初始化为一个空数组,因此 TypeScript 推断出 listchannel 的类型是 never[],即一个空数组类型…

跨境出海安全:如何防止PayPal账户被风控?

今天咱们聊聊那些让人头疼的事儿——PayPal账户被风控。不少跨境电商商家反馈,我们只是想要安安静静地在网上做个小生意,结果不知道为什么,莫名其妙账户就被冻结了。 但其实每个封禁都是有原因的,今天就来给大家分享分享可能的原…

即时通讯平台-音视频即时通讯平台就选WorkPlus

在现代社会,企业和组织对沟通的需求日益增加,尤其是在瞬息万变的商业环境中,音视频即时通讯已成为沟通的主流形式。WorkPlus作为一款专注于音视频即时通讯的平台,凭借其强大的功能和出色的用户体验,成为了企业和团队的…

ajax基础

一:express框架 在终端输入nodejs文件名 // 引入express const express require(express); //创建应用对象 const app express(); //创建路由规则 app.get(/,(request,response) > {//设置响应response.send(Hello Express); }); // 监听3000端口 app.lis…

云网络基础- TCP/IP 协议

文章目录 典型服务模式TCP/IP 协议设置和查看IPIP地址的分类:IP地址组成: 网络位主机位组成克隆:产生一台新的虚拟机win2008 典型服务模式 • C/S,Client/Server架构 – 由服务器提供资源或某种功能 – 客户机使用资源或功能 TCP/IP 协议 • TCP/IP是最广泛支持的通信协议集合…

CPU性能优化--skylake 微架构事件编码示例

Event 事件 编码 Umask 掩码值 事件掩码助记符 描述 C0H 00H INST_RETIRED.ANY_P 退休的指令数量 C4H 00H BR_INST_RETIRED 退休的分支跳转指令 linux perf提供常用性能计数器的映射,可以通过映射的事件名称来访问,而不是指定Event 和Umask十六进制值。…

MySQL 主从复制之多线程复制

文章目录 一、MySQL 多线程复制的背景二、MySQL 5.5 主从复制1、原理2、部署主从复制2.1、主节点安装配置MySQL 5.52.2、从节点安装配置MySQL 5.5 3、检查主从库 server_id 和 log_bin 配置4、创建主从复制用户5、获取主库的二进制日志文件和位置6、配置从库连接主库参数并启动…

怎么用AI读书?

之前一直看到有人介绍AI读书,这次自己也试了试。先说结论吧!个人认为,AI读书是一个不错的辅助工具,但是,切不可过分依赖。 就个人实际使用的感受来看,工具技术类书籍、专业术语比较多的报告、论文等&#…