Python用dilb提取照片上人脸的示例

  

当使用DLib和Python提取照片上的人脸时,需要遵循下面的攻略:

1. 确定环境和依赖

在开始使用DLib和Python提取人脸前,需要先安装Python环境和DLib库。使用pip工具安装的方法如下:

# 安装Python3
sudo apt-get install python3
# 安装pip
sudo apt-get install python3-pip
# 安装DLib依赖
sudo apt-get install build-essential cmake libopenblas-dev liblapack-dev libjpeg-dev libpng-dev libtiff-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libatlas-base-dev gfortran python3-dev python3-numpy libtbb2 libtbb-dev libdc1394-22-dev libgtk-3-dev libcanberra-gtk* libboost-python-dev
# 安装DLib库
pip install dlib

2. 加载图像和模型

加载图像和模型是提取人脸的第一步。把包含人脸的照片加载到Python程序中,然后使用DLib中提供的人脸检测模型来识别人脸。可以使用下面的代码块来实现:

import dlib
import cv2

# 1. 加载照片
img = cv2.imread('./path/to/your/image.jpg')

# 2. 加载模型
detector = dlib.get_frontal_face_detector()

3. 提取人脸

当图像和模型被加载后,就可以使用模型来检测人脸的位置,并从原始图像中提取出正确的人脸,如下所示:

# 3. 人脸检测和提取
faces = detector(img, 1) # 检测人脸(保证获取1张人脸即可)

for face in faces:
    # 根据模型检测到的人脸位置坐标来提取到正确的人脸
    (x, y, w, h) = face_utils.rect_to_bb(face)
    face_img = img[y:y+h, x:x+w]

示例1:提取照片上多个人的人脸

如果照片中有多个人,可以使用循环来遍历所有的人脸:

# 3. 人脸检测和提取
faces = detector(img, 1) # 检测人脸

for face in faces:
    # 根据模型检测到的人脸位置坐标来提取到正确的人脸
    (x, y, w, h) = face_utils.rect_to_bb(face)
    face_img = img[y:y+h, x:x+w]

    # 显示提取出的人脸
    cv2.imshow('Face', face_img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

示例2: 将提取出来的人脸保存到文件中

提取出人脸后,可以使用如下代码将其保存到文件中:

# 3. 人脸检测和提取
faces = detector(img, 1)

for i, face in enumerate(faces):
    # 根据模型检测到的人脸位置坐标来提取到正确的人脸
    (x, y, w, h) = face_utils.rect_to_bb(face)
    face_img = img[y:y+h, x:x+w]

    # 将提取出的人脸保存到文件中
    cv2.imwrite('face_{}.jpg'.format(i), face_img)

以上就是使用DLib和Python提取照片上人脸的示例攻略,希望对您有所帮助。

相关文章