简介
我们这次使用基于开源项目face_recognition库来实现人脸识别,首先介绍一下这个项目吧。
使用世界上最简单的人脸识别库从 Python 或命令行识别和操作人脸。
使用dlib使用深度学习构建的最先进的人脸识别技术构建。该模型在 Wild基准的 Labeled Faces 上的准确率为 99.38% 。
这使得我们可以直接调用这个库来进行人脸识别而不用自己编写程序进行深度学习。这是该项目的github地址
安装
接下来就给大家介绍一下安装这个库的流程,因为该库使用了dlib进行深度学习所有需要dlib库和face_recognition库,又因为我使用了opencv显示图片所有还需要opencv库,我使用的环境是python3.6.4,dlib==19.7.0,face_recognition==1.3.0,因为我使用的是Anaconda所有只需在安装是选择适合的版本就没有报错,但是我试过非Anaconda环境中pip下载是会报错的所有这次重点先交大家如何在python默认环境中安装。
(1)
python -m pip install --upgrade setuptools, python -m pip install --upgrade pip 。先更新更新工具再更新一下pip。
(2)
由于我下载时发现默认下载源下载速度很慢所有我这里进行了更改
(3)
pip install opencv-python
(4)
重点来了,大部分人包括我在安装dlib库时都会报错,这时有两种解决办法install dlib == 19.7.0, 或者下载对应的whl文件进行安装
然后就可以安装face_recognition库啦
如果大家找不到这个whl文件可以私信我获取(有个镜像网站的但是我不记得地址了找找应该能找到)
实现人脸识别
# 导入模块
import cv2
import face_recognition
# 使图片名显示中文但会被吞字
def zh_cn(string):
return string.encode("gbk").decode(errors="ignore")
# 识别人脸图片
image = face_recognition.load_image_file("1.png")
face_locations = face_recognition.face_locations(image)
#调用opencv函数显示图片
img = cv2.imread("1.png")
cv2.namedWindow(zh_cn("原图"), cv2.WINDOW_NORMAL) # cv2.WINDOW_NORMAL使窗口可自定义大小
cv2.imshow(zh_cn("原图"), img)
#遍历每个人脸并标注
faceNum = len(face_locations)
print(f"从这张图片中我发现了{faceNum}张脸!")
for i in range(faceNum):
top, right, bottom, left = face_locations[i] # 上右,下左
start = (left, top)
end = (right, bottom)
color = (0, 255, 0)
thickness = 3
cv2.rectangle(img, start, end, color, thickness) # 左上 右下 画框
#显示识别结果
cv2.namedWindow(zh_cn("识别"), cv2.WINDOW_NORMAL)
cv2.imshow(zh_cn("识别"), img)
cv2.waitKey(0) # 使窗口停留,不加会一闪而过
cv2.destroyAllWindows() # 关闭窗口
结果展示
原图
识别
总结
这只是运用该库实现的小小案例还有很多好玩有趣的操作,大家可以自己操作玩玩,新的一年祝大家身体健康,阖家幸福,代码无bug。