使用Python和OpenCV实现实时人脸检测并保存截图

这篇具有很好参考价值的文章主要介绍了使用Python和OpenCV实现实时人脸检测并保存截图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在本篇博客中,我们将使用Python和OpenCV库实现一个实时人脸检测的小项目。我们将利用OpenCV中的Haar级联分类器来检测摄像头捕获的图像中的人脸。

项目功能

  1. 通过摄像头实时捕获视频流。
  2. 使用Haar级联分类器检测视频帧中的人脸。
  3. 在检测到的人脸周围绘制矩形框。
  4. 实时显示检测结果。
  5. 截图人脸并保存。

环境准备

确保您已经安装了Python和OpenCV。如果尚未安装,请按照以下步骤进行安装:

  1. 安装Python:请访问Python官网下载并安装适合您操作系统的Python版本。
  2. 安装OpenCV:在命令行中输入以下命令以安装OpenCV库:
    pip install opencv-python
    

项目代码

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

import cv2

接下来,加载预训练的Haar级联分类器: 

face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')

现在,我们将编写一个函数来检测图像中的人脸并在检测到的人脸周围绘制矩形框: 

def detect_faces(img, cascade):
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    faces = cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

    for (x, y, w, h) in faces:
        cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)

    return img

 最后,我们将捕获摄像头的视频流,并对每一帧应用人脸检测:

cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()
    frame = detect_faces(frame, face_cascade)
    cv2.imshow('Real-time Face Detection', frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

现在,您可以运行上面的代码,启动实时人脸检测程序。在弹出的窗口中,您应该能看到摄像头捕获的图像,检测到的人脸周围用矩形框标记。按“q”键退出程序。

但是如果要实现截图并且保存到文件夹还需要:
导入额外的库来处理时间和文件操作:

def save_faces(img, faces, output_dir):
    for i, (x, y, w, h) in enumerate(faces):
        face = img[y:y + h, x:x + w]
        filename = os.path.join(output_dir, f'face_{i}.png')
        cv2.imwrite(filename, face)

现在,我们需要稍微修改 detect_faces 函数,使其返回检测到的人脸坐标:

def detect_faces(img, cascade):
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    faces = cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

    for (x, y, w, h) in faces:
        cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)

    return img, faces

接下来,在捕获摄像头的视频流的循环中,我们将为每个检测到的人脸创建一个以实时时间命名的文件夹,并将人脸截图保存到其中:

cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()
    frame, faces = detect_faces(frame, face_cascade)

    if len(faces) > 0:
        timestamp = datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
        output_dir = os.path.join('faces', timestamp)
        os.makedirs(output_dir, exist_ok=True)
        save_faces(frame, faces, output_dir)

    cv2.imshow('Real-time Face Detection', frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

现在,当程序检测到人脸时,它将自动截取人脸并将其保存为PNG格式的图像。这些图像将保存在一个名为 "faces" 的文件夹中,该文件夹中包含以实时时间命名的子文件夹。按“q”键退出程序。文章来源地址https://www.toymoban.com/news/detail-669403.html

到了这里,关于使用Python和OpenCV实现实时人脸检测并保存截图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用YOLOv5实现实时目标检测结果保存

           本文将分享保存实时目标检测结果的方法,包括将目标信息逐帧保存到.txt文件中、逐帧输出检测结果图片、以及如何保存所有检测图片(包括视野中无目标的帧)。 目录 0.准备 1.目标信息保存 2.检测图片保存 3.保存所有帧        本文以单摄像头实时目标检测进行演

    2024年02月03日
    浏览(47)
  • 人脸检测实战:使用opencv加载深度学习模型实现人脸检测(1)

    import argparse import cv2 ap = argparse.ArgumentParser() ap.add_argument(“-i”, “–image”, required=True, help=“path to input image”) ap.add_argument(“-p”, “–prototxt”, required=True, help=“path to Caffe ‘deploy’ prototxt file”) ap.add_argument(“-m”, “–model”, required=True, help=“path to Caffe pre-trained model”)

    2024年04月16日
    浏览(56)
  • 【opencv】python实现人脸检测和识别训练

    OpenCV 中的人脸识别通常基于哈尔特征分类器(Haar Cascade Classifier)进行。以下是 OpenCV 人脸识别的基本原理: Haar Cascade Classifier : 特征分类器 :Haar 特征是一种基于矩形区域的特征,可以用于图像中的对象检测。这些特征可以表示边缘、线和区域的变化等。 级联分类器 :

    2024年01月17日
    浏览(49)
  • Python+OpenCV 简单实现人脸检测多个和人脸识别 2(附代码)

    如果dilb和face_recognition第三方包安装失败,请移步到Python 解决dilb和face_recognition第三方包安装失败_水w的博客-CSDN博客 上篇请移步到Python+dilb 简单实现人脸检测(附代码)_水w的博客-CSDN博客 本篇是在上篇的工作基础上进行的。 目录 6 人脸检测多个 7 视频检测 8 拍照保存 9 训练

    2024年01月16日
    浏览(52)
  • Android 使用OpenCV实现实时人脸识别,并绘制到SurfaceView上

    上篇文章 我们已经通过一个简单的例子,在 Android Studio 中接入了 OpenCV 。 之前我们也 在Visual Studio上,使用OpenCV实现人脸识别 中实现了人脸识别的效果。 接着,我们就可以将 OpenCV 的人脸识别效果移植到 Android 中了。 1.1 环境说明 操作系统 : windows 10 64 位 Android Studio 版本

    2024年02月10日
    浏览(50)
  • 快速通过pycharm搭建python+opencv实现人脸检测

      首先导入opencv 1代码实现效果,在界面下显示所要显示的图片 在同一目录下存放显示的图片 img = cv.imread(\\\'face1.jpg\\\')函数字符串变量填写存放照片的名字 为了让人眼看到照片所以使用cv.waitKey(0),起到delay的作用 2代码实现效果对图片进行灰度转换 灰度转换可以让计算机更轻易对

    2024年02月16日
    浏览(34)
  • 利用OpenCV Haar分类器检测人脸(python实现)

    人脸检测(Face Detection)是当前目标检测领域中一项非常热门的研究领域,它是人脸识别与人脸表情分析的核心,本篇文章介绍采用OpenCV中Haar分类器算法对图片中人脸的检测,并通过矩形框讲人脸与眼睛位置框选与标记. Haar级联分类器是一种基于特征提取和机器学习的对象检

    2024年02月05日
    浏览(49)
  • 人脸检测进阶:使用 dlib、OpenCV 和 Python 检测面部标记

    3、我们将看一些将面部标记检测应用于图像的结果。 什么是面部标记? =================================================================== 人脸标记点检测是形状预测问题的一个子集。给定一个输入图像(通常是一个指定感兴趣对象的ROI),形状预测器尝试沿形状定位感兴趣的关键点。 在

    2024年04月13日
    浏览(64)
  • 教你使用开源opencv实现人脸检测

    教你使用开源opencv实现人脸检测 人脸检测是现在比较常用的功能,比如出租车司机人脸与司机驾照照片对比,门禁系统中进入者的人脸与人脸库中的人脸进行对比。要实现人脸对比,首先要实现的是人脸检测,在摄像头拍摄到的一张图片中,正确的检测到人脸的位置这就至关

    2024年02月09日
    浏览(40)
  • OpenCV+FFmpeg 实现人脸检测Rtmp直播推流(Python快速实现)

    windows平台笔记本摄像头视频采集、人脸识别,识别后将视频推流到RTMP流媒体服务器,在任意客户端可以进行RTMP拉流播放。 效果如图: 使用VLC播放器进行拉流。 需要先安装OpenCV的python包以及FFmpeg。 对于ffmpeg有两种调用方式,但这两种方式都需要先安装ffmpeg,调用的具体区别

    2024年02月12日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包