# Google Hangouts 视频中的人脸检测

> 原文： [https://pythonspot.com/face-detection-in-video/](https://pythonspot.com/face-detection-in-video/)

在本教程中，您将学习如何在 Python 中应用人脸检测。 作为输入视频，我们将使用 Google Hangouts 视频。 网路上有大量的 Google Hangouts 视讯，在这些视讯中，人脸通常大到足以让软体侦测到人脸。

使用 OpenCV（Open Computer Vision）库实现面部检测。 最常见的面部检测方法是[提取级联](https://docs.opencv.org/modules/objdetect/doc/cascade_classification.html#haar-feature-based-cascade-classifier-for-object-detection)。 已知该技术可以很好地与人脸检测配合使用。 您需要将级联文件（包含在 OpenCV 中）放在程序所在的目录中。

## Python OpenCV 和视频

为了分析输入视频，我们提取每个帧。 每个帧显示的时间很短。 从这个基本程序开始：

```py
#! /usr/bin/python

import cv2

vc = cv2.VideoCapture('video.mp4')
c=1
fps = 24

if vc.isOpened():
    rval , frame = vc.read()
else:
    rval = False

while rval:
    rval, frame = vc.read()
    cv2.imshow("Result",frame)
    cv2.waitKey(1000 / fps);
    vc.release()

```

执行后，您将看到没有声音播放的视频。 （OpenCV 不支持声音）。 在 while 循环内，我们将每个视频帧包含在可变帧内。

## 使用 OpenCV 进行人脸检测

我们将在脸部上方显示一个矩形。 为了避免矩形的闪烁，如果未检测到面部，我们将在最新的已知位置显示该矩形。

```py
#! /usr/bin/python

import cv2

face_cascade = cv2.CascadeClassifier('lbpcascade_frontalface.xml')
vc = cv2.VideoCapture('video.mp4')

if vc.isOpened():
    rval , frame = vc.read()
else:
    rval = False

roi = [0,0,0,0]

while rval:
    rval, frame = vc.read()

    # resize frame for speed.
    frame = cv2.resize(frame, (300,200))

    # face detection.
    faces = face_cascade.detectMultiScale(frame, 1.8, 2)
    nfaces = 0
    for (x,y,w,h) in faces:
    cv2.rectangle(frame,(x,y),(x+w,y+h),(0,0,255),2)
    nfaces = nfaces + 1
    roi = [x,y,w,h]

    # undetected face, show old on position.
    if nfaces == 0:
        cv2.rectangle(frame,(roi[0],roi[1]),(roi[0]+roi[2],roi[1]+roi[3]),(0,0,255),2)

    # show result
    cv2.imshow("Result",frame)
    cv2.waitKey(1);
    vc.release()

```

在此程序中，我们仅假设视频屏幕中只有一张脸。 我们减小了屏幕尺寸，以加快处理时间。 在大多数情况下，这很好，因为检测将在较低的分辨率下正常工作。 如果要“实时”执行人脸检测，则必须缩短计算周期。 此实现的替代方法是先处理，然后再显示。

该技术的局限性在于它不能始终检测到面部，并且可能无法检测到很小或被遮挡的面部。 它可能显示出误报，例如被检测为人脸的袋子。 这种技术在某些类型的输入视频上效果很好。

[下载计算机视觉示例和课程](https://pythonspot.com/download-vision-examples/)