人脸检测竟如此简单?手把手用Python教你搞定!

954 阅读4分钟

在这篇文章中,我将向你展示如何使用 Python 构建一个简单的人脸检测器。 构建一个检测人脸的程序是一个非常好的开始计算机视觉的项目。 在上一篇文章中,我展示了如何识别图像中的文本,这是在计算机视觉中练习 Python 的好方法。 

今天,我们将做一些更有趣更有趣的事情:人脸检测。 从名称可以理解,我们将编写一个程序来检测图像中的人脸。当我说“程序”时,你可以将其理解为教机器做什么。我喜欢使用教学而不是编程,因为这实际上是我们正在做的。

最好的学习方式是教学,所以在教机器如何检测人脸的同时,我们也在学习。在我们进入项目之前,我想分享一下人脸检测和人脸识别器之间的区别。 

人脸检测与人脸识别

这两件事听起来可能非常相似,但实际上,它们并不相同。让我们了解其中的区别,以免错过重点。人脸检测是从图像或视频中检测人脸的过程。该程序除了查找人脸之外什么都不做。但另一方面,人脸识别,程序会找到人脸,并且可以分辨出哪张脸属于谁。

因此,它比仅仅检测它们提供更多信息。有更多的编程,换句话说,更多的教学。 假设你正在看街道,汽车正在经过。人脸检测就像告诉经过的物体是一辆汽车。而人脸识别器就像能够分辨出经过的汽车的型号。

让我们开始吧!

我们将为此项目使用一个模块库,它称为 OpenCV。 OpenCV 是一个高度优化的库,专注于实时应用程序。 

 OpenCV(开源计算机视觉库)是一个开源的计算机视觉和机器学习软件库。 OpenCV 旨在为计算机视觉应用程序提供通用基础架构,并加速机器感知在商业产品中的使用。 作为 BSD 许可的产品,OpenCV 可以轻松地使用和修改代码。 

Library

 首先,让我们安装软件包。

pip install opencv-python

安装完成后,我们就可以将其导入到我们的程序中了。

import cv2

OpenCV 已经包含许多针对面部、眼睛、微笑等的预训练分类器。这些 XML 文件存储在一个文件夹中。 我们将使用人脸检测模型。

人脸检测的代码:raw.githubusercontent.com/opencv/open…

你可以从 Github 下载 XML 文件。 如果没有,可以下载上述链接复制代码并将其粘贴到文本文档中,并将其另存为“face_detector.xml”。 将文件保存在当前文件夹中后,让我们将其加载到我们的程序中。

# Load the cascade
face_cascade = cv2.CascadeClassifier('face_detector.xml')

导入图像 

在此步骤中,将选择要在其上测试代码的图像。 确保图像中至少有一张脸,以便我们的程序可以找到一张。 这是一个人的示例图像。

选择图像后,让我们在我们的程序中定义它。 确保图像文件位于您正在使用的同一文件夹中。

# Read the input image
img = cv2.imread('test.jpg')

人脸检测 

你会惊讶于人脸检测代码有多短。 感谢为 OpenCV 做出贡献的人们。 这是检测图像中人脸的代码:

# Detect facesfaces = face_cascade.detectMultiScale(img, 1.1, 4)

我们之前在代码中定义了 face_cascade。 

检测到人脸后,我们将在它们周围绘制矩形,以便我们知道机器看到了什么。 机器可能会犯错误,但我们的目标应该是教授最好和最优化的方法,以便预测更准确。 使用以下代码可以在检测到的面部周围绘制矩形:

# Draw rectangle around the facesfor (x, y, w, h) in faces:   cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
  • (255,0,0) 是我们要绘制的矩形的颜色。 你也可以改变颜色。 
  • (2) 是线的粗细。 你也可以更改该值并查看其外观。

最后 

这是最后一步,现在我们将结果导出为图像文件。 此图像将显示人脸检测的结果。 为了保存新的图像文件,我们将使用 cv2 库中名为“imwrite”的方法。 保存完成后,你可以在终端中看到“成功保存”。

# Export the result
cv2.imwrite("face_detected.png", img) 
print('Successfully saved')

恭喜!! 

你已经创建了一个程序来检测图像中的人脸。 现在,你可以对如何教机器做一些很酷的事情有了一个想法。 希望你喜欢本教程并在今天学到新东西。 

最近几个月我们更新了不少关于行人分析的相关研发过程,对于TSINGSEE青犀视频的各大平台来说,在不久后也逐步将智能分析的功能融合进去,形成新的智能分析平台,欢迎大家关注我们的更新。