【Face Recognition人脸识别】1. 人脸检测

  • 我们已经学习了人脸识别的基本流程,包括人脸图像采集、人脸检测、特征点提取和人脸识别的整个流程。不仅了解了其中的原理,还学会了编写实际应用的代码。
  • 本次主要将介绍使用Face Recognition库进行人脸识别。因为Face Recognition是对Dlib的封装,所以其原理和我们前几个讲解的相同。本次主要为大家讲解其基本使用方法。
  • 为什么在学习完整个流程之后还要讲Face Recognition库呢?
    …在前面我们主要使用Dlib库,它是一个在工业界和学术界广受好评,极其优秀的库。
    …而Face Recognition基于Dlib库做了高度封装,当之无愧的称之为世界上最简洁的人脸识别库。
    …所以,我们学习完基础的原理以及Dlib库,就好比学会了“走路”;而Face Recognition库的高效与简洁,可以让我们彻底“跑起来”。

【 1. 读取图片 】

load_image_file(file, mode='RGB')

#	file:带检测的图片文件路径;
#	mode:可选值,默认为RGB,也可以指定为L ,代表转化为灰度照片。

范例:

image = face_recognition.load_image_file("picture1.jpg")

【 2. 检测人脸并返回人脸位置 】

在face recognition库中,人脸检测只需两步:

  • 读取照片;
  • 检测人脸。
    .
    ( 也就是将模型选择之类的操作都封装,默认使用Dlib库中已经训练完成的模型。)
face_locations(img, number_of_times_to_upsample=1, model="hog")

#	img:待检测的图片对象;
#	number_of_times_to_upsample:可选值,为寻找人脸进行多少次图片变换,值越大,越能找到更小的人脸;
#	model:可选值,默认使用hog模式, hog 模式在CPU上运行表现更好;如果有GPU加速,也可以指定为cnn模式。

范例:

# 加载face_recognition库
import face_recognition
# 读取照片
image = face_recognition.load_image_file("picture.jpg")
# 获取检测到的人脸位置
face_locations = face_recognition.face_locations(image)
# 输出人脸位置
print(face_locations)

picture1.jpg:
【Face Recognition人脸识别】1. 人脸检测_第1张图片
运行结果:
【Face Recognition人脸识别】1. 人脸检测_第2张图片

【 3. 绘制人脸区域 】

我们同样可以使用之前学到的OpenCV绘制人脸区域,再前面识别的基础代码上,加上下面的绘制代码:

import cv2
# 加载face_recognition库
import face_recognition
# 读取照片
image = face_recognition.load_image_file("picture1.jpg")
# 获取检测到的人脸位置
face_locations = face_recognition.face_locations(image)
# 打印人脸位置
print(face_locations)
# 绘制人脸区域
for face_location in face_locations:
    top, right, bottom, left = face_location
    cv2.rectangle(image, (left, top), (right, bottom), (0, 255, 0), 2)
# 将图片转换成原来的色彩
#(因在前面的步骤中face recognition已自动将图片转化成了灰度图)
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# 展示图片
cv2.imshow("picture1 Recognition", image_rgb)
# 等待用户关闭界面
cv2.waitKey(0)

运行结果:
【Face Recognition人脸识别】1. 人脸检测_第3张图片
【Face Recognition人脸识别】1. 人脸检测_第4张图片

你可能感兴趣的:(Python,机器视觉)