python人脸检测 | Hlwdy's blog
python人脸检测
发表于 2020-03-28 共 589 字
分类于 python

python人脸检测

在python中完成人脸检测是很轻松的一件事,因为可以利用cv2库

那么我们需要完成的功能的有

首先,需要安装cv2这个库(opencv),这里使用pip进行安装

pip install opencv-python

等待安装完成,然后我们就可以开始写代码了。

import cv2

imagepath = "test.jpg"
image = cv2.imread(imagepath)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

这不多说,就是引用cv2,读取目录下一张叫test.jpg的图片,并进行灰度处理

接下来是人脸检测的部分,我们首先需要下载识别训练包,就是别人训练好的数据包

我放到微云上了,可以进行下载

链接: https://share.weiyun.com/5QN5XKA (密码:0jdz)

解压后里面所有文件放到目录下haarcascades文件夹中,然后写入如下代码:

face_cascade = cv2.CascadeClassifier('haarcascades\\haarcascade_frontalface_alt2.xml')

这里默认使用的正脸数据包(haarcascade_frontalface_alt2),因为通过测试这个识别率较高,

接下来,进行人脸检测

faces = face_cascade.detectMultiScale(
    gray,
    scaleFactor=1.15,
    minNeighbors=5,
    minSize=(5, 5),
)

这样,我们就获取到了一个列表,里面存有检测到的人脸的数据

len(faces)就是人脸的数量,可以使用print(len(faces))进行输出

接下来,我们对图片中人脸位置进行标记,遍历每个人脸,使用rectangle进行画矩形标记

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

最后,我们使用cv2.imwrite('out.jpg', image)保存输出最终图片

完整代码如下:

import cv2

imagepath = "test.jpg"
image = cv2.imread(imagepath)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
face_cascade = cv2.CascadeClassifier('haarcascades\\haarcascade_frontalface_alt2.xml')

faces = face_cascade.detectMultiScale(
    gray,
    scaleFactor=1.15,
    minNeighbors=5,
    minSize=(5, 5),
)
print(len(faces))

for (x, y, w, h) in faces:
    cv2.rectangle(image, (x, y), (x + w, y + w), (0, 255, 0), 2)
cv2.imwrite('out.jpg', image)

利用opencv库就是这么简单,后面我还会弄python人脸对比识别的教程

筛选文章
类别选择 (分类/标签)
全屏 关闭