阅读(2.6k) 书签 (0)

AI人工智能 人脸检测

2020-09-24 13:41 更新

人脸检测是计算机视觉的令人着迷的应用之一,它使其更加逼真。 OpenCV 有一个内置的工具来执行人脸检测。 我们将使用 Haar 级联分类器进行人脸检测。

Haar 级联数据

我们需要数据来使用 Haar 级联分类器。 可以在我们的 OpenCV 包中找到这些数据。 安装 OpenCv 后,有一个文件夹名称 haarcascades。 将有不同应用程序的 .xml 文件。 现在,将它们全部复制以供不同的使用,然后粘贴到当前项目下的新文件夹中。

示例

以下是使用 Haar 级联检测下图中显示的 Amitabh Bachan 的面部的 Python 代码 -

img

如下所示导入 OpenCV 包 -

import cv2
import numpy as np

现在,使用 HaarCascadeClassifier 来检测脸部 -

face_detection=
cv2.CascadeClassifier('D:/ProgramData/cascadeclassifier/
haarcascade_frontalface_default.xml')

使用 imread() 函数读取一个指定的图像,

img = cv2.imread('AB.jpg')

将其转换为灰度,因为它会接受灰色图像 -

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

接下来,使用 face_detection.detectMultiScale,执行实际的人脸检测

faces = face_detection.detectMultiScale(gray, 1.3, 5)

围绕整个脸部绘制一个矩形 -

for (x,y,w,h) in faces:
   img = cv2.rectangle(img,(x,y),(x+w, y+h),(255,0,0),3)
cv2.imwrite('Face_AB.jpg',img)

如图所示,这个 Python 程序将创建一个名为 Face_AB.jpg 的图像,它包含人脸检测 -

img

眼睛检测

眼睛检测是计算机视觉的另一个引人注目的应用,使其更加逼真和未来。 OpenCV 有一个内置的工具来执行眼睛检测。 我们将使用 Haar 级联分类器进行眼睛检测。

示例 以下示例给出了使用 Haar 级联的 Python 代码来检测下图中给出的 Amitabh Bachan 的面部 -

img

如下所示导入 OpenCV 包 -

import cv2
import numpy as np

使用 HaarCascadeClassifier 检测脸部 -

eye_cascade = cv2.CascadeClassifier('D:/ProgramData/cascadeclassifier/haarcascade_eye.xml')

使用 imread()函数读取指定图像 -

img = cv2.imread('AB_Eye.jpg')

然后,将其转换为灰度,因为它会接受灰色图像 -

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

使用 eye_cascade.detectMultiScale ,执行实际的人脸检测 -

eyes = eye_cascade.detectMultiScale(gray, 1.03, 5)

现在,围绕整个脸部绘制一个矩形 -

for (ex,ey,ew,eh) in eyes:
   img = cv2.rectangle(img,(ex,ey),(ex+ew, ey+eh),(0,255,0),2)
cv2.imwrite('Eye_AB.jpg',img)

这个 Python 程序将创建一个名为 Eye_AB.jpg 的图像,如图所示,

img