包依赖

我们可以使用opencv来进行电脑摄像头调用,并使用dlib包进行人脸识别

这里我使用的conda包管理器

conda install -c conda-forge opencv
conda install -c conda-forge dlib

代码实现

import cv2 as cv
import dlib


# 加载人脸检测器和关键点检测器
detector = dlib.get_frontal_face_detector()
# 这里的shape_predictor_68_face_landmarks.dat需要去dlib官网下载,并放到工程目录下
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")


def grab_camera():
# 使用默认的摄像头
camera = cv.VideoCapture(0)
while True:
ret, frame = camera.read()

if not ret:
break

# 将视频帧转换为灰度图像
gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)

# 检测人脸
faces = detector(gray)

for face in faces:
# 获取人脸关键点数据
landmarks = predictor(gray, face)

print("人脸特征值:", landmarks)

# 绘制人脸标记
for i in range(68):
x = landmarks.part(i).x
y = landmarks.part(i).y
cv.circle(frame, (x, y), 1, (0, 0, 255), -1)

# 显示视频帧
cv.imshow('video', frame)
# 检测按键,按下c退出循环
if cv.waitKey(1) & 0xFF == ord('c'):
break

camera.release()
cv.destroyAllWindows()


# Press the green button in the gutter to run the script.
if __name__ == '__main__':
grab_camera()

代码中的shape_predictor_68_face_landmarks.dat需要去dlib​​官网​​下载,并放到工程目录下

下载地址:​​http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2​