包依赖
我们可以使用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