安装环境:
win7 /win8/win10
python3.6 (必须3.6)
opencv3
测试代码:
-
#coding=utf-8
-
#人脸识别类 - 使用face_recognition模块
-
import cv2
-
import face_recognition
-
import os
-
-
path =
"img/face_recognition"
# 模型数据图片目录,里面直接放带有名字的图片即可
-
cap = cv2.VideoCapture(
0)
-
total_image_name = []
-
total_face_encoding = []
-
for fn
in os.listdir(path):
-
print(path +
"/" + fn)
-
total_face_encoding.append(
-
face_recognition.face_encodings(
-
face_recognition.load_image_file(path +
"/" + fn))[
0])
-
fn = fn[:(len(fn) -
4)]
#截取图片名(这里应该把images文件中的图片名命名为为人物名)
-
total_image_name.append(fn)
#图片名字列表
-
while (
1):
-
ret, frame = cap.read()
-
# 发现在视频帧所有的脸和face_enqcodings
-
face_locations = face_recognition.face_locations(frame)
-
face_encodings = face_recognition.face_encodings(frame, face_locations)
-
# 在这个视频帧中循环遍历每个人脸
-
for (top, right, bottom, left), face_encoding
in zip(
-
face_locations, face_encodings):
-
# 看看面部是否与已知人脸相匹配。
-
for i, v
in enumerate(total_face_encoding):
-
match = face_recognition.compare_faces(
-
[v], face_encoding, tolerance=
0.5)
-
name =
"Unknown"
-
if match[
0]:
-
name = total_image_name[i]
-
break
-
# 画出一个框,框住脸
-
cv2.rectangle(frame, (left, top), (right, bottom), (
0,
0,
255),
2)
-
# 画出一个带名字的标签,放在框下
-
cv2.rectangle(frame, (left, bottom -
35), (right, bottom), (
0,
0,
255),
-
cv2.FILLED)
-
font = cv2.FONT_HERSHEY_DUPLEX
-
cv2.putText(frame, name, (left +
6, bottom -
6), font,
1.0,
-
(
255,
255,
255),
1)
-
# 显示结果图像
-
cv2.imshow(
'Video', frame)
-
if cv2.waitKey(
1) &
0xFF == ord(
'q'):
-
break
-
-
cap.release()
-
cv2.destroyAllWindows()
***最重要的一步***:就是通过https://pypi.org/simple/dlib/ 该网站下载whl(编译后的文件,使用pip安装超级简单),不使用whl文件安装,会报各种错误。
第一步:dlib安装:
通过链接:https://pypi.org/simple/dlib/下载“dlib-19.7.0-cp36-cp36m-win_amd64.whl“安装包
使用命令:pip install dlib-19.7.0-cp36-cp36m-win_amd64.whl.whl
第二步:face_recognition安装
使用命令:pip install face_recognition
第三步:opencv安装
使用命令:pin install opencv