使用Python和OpenCV构建具有人体检测功能的摄像头录制器

简介: 使用Python和OpenCV构建具有人体检测功能的摄像头录制器

介绍


在本教程中,我们将探讨如何使用Python和OpenCV构建一个具有人体检测功能的摄像头录制应用程序。该应用程序允许我们从计算机的摄像头录制视频,并自动检测和提取人体存在的部分。借助YOLO目标检测算法的强大功能,我们可以轻松识别和隔离人体动作。让我们逐步深入,看看如何创建这个应用程序。


前提条件


在开始之前,请确保系统上安装了以下依赖:

  • Python 3.x
  • OpenCV库
  • 预训练的YOLO模型(yolov3.cfg和yolov3.weights)
  • VLC媒体播放器(或任何其他兼容的媒体播放器)
  • ffmpeg(命令行工具)用于视频提取


强大的技术:Python、OpenCV、YOLO和FFmpeg


项目配置


  1. 从GitHub上克隆项目存储库。
  2. 您可以在这里找到存储库。
  3. 在存储库中,您将找到一个详细的README文件,其中提供了有关设置项目的逐步说明。它包括有关先决条件、安装步骤和其他资源的信息。
  4. 按照README文件中的说明安装所需的Python包,下载预训练的YOLO模型,并在系统上设置VLC媒体播放器和ffmpeg。
  5. README文件还提供了如何配置项目的指南,包括YOLO模型文件的放置和应用程序的使用。

项目代码文件:用于摄像头录制和人体检测的Python脚本代码链接:https://github.com/g4lb/camera-recorder-with-human-detection


从摄像头录制视频

  1. 在您喜欢的代码编辑器中打开camera_recorder.py文件。
  2. 在文件内,您将找到使用OpenCV捕获摄像头视频所需的代码。这包括初始化视频捕获、设置所需的视频分辨率和配置视频编解码器。
  3. 您可以根据需要修改配置参数。例如,您可以通过更改frame_width和frame_height变量的值来调整分辨率。此外,您可以通过修改fourcc变量来尝试不同的视频编解码器。
  4. 运行camera_recorder.py脚本以开始从摄像头录制视频。您将看到来自摄像头的实时视频源,并且将创建一个新的视频文件并保存在"records"文件夹中。


通过参考项目存储库中的camera_recorder.py文件,您将找到所有必要的配置详细信息和录制视频的代码实现,使用Python和OpenCV从摄像头录制视频。


提取人体运动


在视频中检测到人体后,我们将提取存在人体的部分。所有的配置详细信息和代码实现都可以在项目存储库的human_detection.py文件中找到。


  1. 在您喜欢的代码编辑器中打开human_detection.py文件。
  2. 在文件内,您将找到使用YOLO进行人体检测并提取表示人体运动的帧所需的代码。这包括初始化YOLO模型、设置置信度阈值(conf_threshold)和定义后处理步骤。
  3. 您可以根据需要修改配置参数。例如,您可以通过更改conf_threshold变量的值来调整置信度阈值。较高的值将导致更严格的检测,而较低的值可能包括更多的假阳性。

通过参考项目存储库中的human_detection.py文件,您将找到所有必要的配置详细信息和代码实现,使用YOLO和OpenCV从录制的视频中提取人体运动。

演示:人体检测在实际操作中 — 出现并消失两次


将检测到的人体部分保存为视频


一旦我们有了表示人体运动的帧,我们将它们保存为单独的视频文件。所有的配置详细信息和代码实现都可以在项目存储库的human_detection.py文件中找到。


  1. 在您喜欢的代码编辑器中打开human_detection.py文件。
  2. 在文件内,您将找到将表示人体运动的帧保存为单独的视频文件所需的代码。这包括配置输出文件名、格式和文件路径。
  3. 您可以根据需要修改配置参数。例如,您可以更改输出文件格式、调整文件命名约定或指定不同的输出目录。
  4. 运行human_detection.py脚本以开始人体检测过程。脚本将分析"records"文件夹中的录制视频文件,检测人体运动并标识表示人体存在的帧。
  5. 视频的检测部分将以"video_timestamp_human.mp4"(例如,"video_2023–07–06_11–52–34_human.mp4")的格式保存为单独的MP4文件。

通过参考项目存储库中的human_detection.py文件,您将找到所有必要的配置详细信息和代码实现,使用OpenCV和ffmpeg将表示人体运动的帧保存为单独的视频文件。录制的视频和检测到的人体部分:records与output文件夹


挑战:subprocess.run与subprocess.call


在项目的实施过程中,使用子进程模块执行ffmpeg命令时,您可能会遇到一个挑战。子进程模块中有两个常用的函数:subprocess.run和subprocess.call。这两个函数都可以用于运行外部命令,但它们在行为和返回值方面存在一些差异。


subprocess.run函数在Python 3.5中引入,与subprocess.call相比,提供了更强大和灵活的接口。它允许捕获命令的输出,处理错误,设置超时等。另一方面,subprocess.call是一个更简单的函数,运行命令并等待其完成,不捕获输出或处理错误。


在使用ffmpeg从检测到的帧创建视频时,您可能需要在subprocess.run和subprocess.call之间做出选择。如果需要捕获输出或在视频创建过程中处理潜在的错误,subprocess.run是推荐的选择。但是,如果只需要执行命令并等待其完成而不捕获输出,subprocess.call可以是一个更简单的选择。

ffmpeg命令:从帧创建检测到的人体视频剪辑

根据您的具体需求使用适当的函数。请确保处理在执行ffmpeg命令时可能发生的错误或异常。比较:subprocess.run与subprocess.call

结论
在本教程中,我们使Python和OpenCV构建了一个具有人体检测功能的摄像头录制应用程序。我们学会了如何从摄像头录制视频,使用YOLO检测人体,并提取具有人体运动的部分。借助OpenCV和YOLO的强大功能,我们可以自动化检测和隔离人体运动的过程,为各种应用开辟了可能性,如监视、活动监测等。

相关文章
|
编解码 数据安全/隐私保护 计算机视觉
Opencv学习笔记(十):同步和异步(多线程)操作打开海康摄像头
如何使用OpenCV进行同步和异步操作来打开海康摄像头,并提供了相关的代码示例。
1446 1
Opencv学习笔记(十):同步和异步(多线程)操作打开海康摄像头
|
计算机视觉
Opencv学习笔记(八):如何通过cv2读取视频和摄像头来进行人脸检测(jetson nano)
如何使用OpenCV库通过cv2模块读取视频和摄像头进行人脸检测,并提供了相应的代码示例。
552 1
|
计算机视觉 索引
OpenCv实时设置摄像头参数/获得摄像头参数值的方法论
这篇文章提供了一个OpenCV的实例教程,展示了如何使用`createTrackbar()`函数实时设置和获取摄像头参数值,如饱和度、Gamma和亮度,并通过回调函数在程序中连续修改这些参数。
|
编解码 计算机视觉 Python
Opencv学习笔记(九):通过CV2将摄像头视频流保存为视频文件
使用OpenCV库通过CV2将摄像头视频流保存为视频文件,包括定义视频编码格式、设置保存路径、通过write写入视频文件,并提供了相应的Python代码示例。
890 0
|
人工智能 编解码 算法
如何在Python下实现摄像头|屏幕|AI视觉算法数据的RTMP直播推送
本文详细讲解了在Python环境下使用大牛直播SDK实现RTMP推流的过程。从技术背景到代码实现,涵盖Python生态优势、AI视觉算法应用、RTMP稳定性及跨平台支持等内容。通过丰富功能如音频编码、视频编码、实时预览等,结合实际代码示例,为开发者提供完整指南。同时探讨C接口转换Python时的注意事项,包括数据类型映射、内存管理、回调函数等关键点。最终总结Python在RTMP推流与AI视觉算法结合中的重要性与前景,为行业应用带来便利与革新。
850 5
|
XML 机器学习/深度学习 人工智能
使用 OpenCV 和 Python 轻松实现人脸检测
本文介绍如何使用OpenCV和Python实现人脸检测。首先,确保安装了OpenCV库并加载预训练的Haar特征模型。接着,通过读取图像或视频帧,将其转换为灰度图并使用`detectMultiScale`方法进行人脸检测。检测到的人脸用矩形框标出并显示。优化方法包括调整参数、多尺度检测及使用更先进模型。人脸检测是计算机视觉的基础技术,具有广泛应用前景。
807 10
|
机器学习/深度学习 计算机视觉
目标检测笔记(六):如何结合特定区域进行目标检测(基于OpenCV的人脸检测实例)
本文介绍了如何使用OpenCV进行特定区域的目标检测,包括人脸检测实例,展示了两种实现方法和相应的代码。
622 1
目标检测笔记(六):如何结合特定区域进行目标检测(基于OpenCV的人脸检测实例)
|
缓存 监控 计算机视觉
视频监控笔记(三):opencv结合ffmpeg获取rtsp摄像头相关信息
本文介绍了如何使用OpenCV结合FFmpeg获取RTSP摄像头信息,包括网络架构、视频监控系统组成、以及如何读取和显示网络摄像头视频流。
716 1
|
计算机视觉 Python
python利用pyqt5和opencv打开电脑摄像头并进行拍照
本项目使用Python的PyQt5和OpenCV库实现了一个简单的摄像头应用。用户可以通过界面按钮打开或关闭摄像头,并实时预览视频流。点击“拍照”按钮可以捕捉当前画面并保存为图片文件。该应用适用于简单的图像采集和处理任务。
1167 0
python利用pyqt5和opencv打开电脑摄像头并进行拍照
|
机器学习/深度学习 计算机视觉 Python
opencv环境搭建-python
本文介绍了如何在Python环境中安装OpenCV库及其相关扩展库,包括numpy和matplotlib,并提供了基础的图像读取和显示代码示例,同时强调了使用Python虚拟环境的重要性和基本操作。

推荐镜像

更多