今天发现了一个开源的人脸识别项目。跟大家分享一下。
这个是知乎上面大神将项目README文件翻译成中文,方便大家学习。在此向同济大学开源软件协会 子豪兄Tommy表示感谢。https://zhuanlan.zhihu.com/p/45827914
项目地址:https://github.com/ageitgey/face_recognition感兴趣的朋友自行去了解一下。
今天我们将用python来实现人脸识别。
安装部分
1、前期准备工作
下载好python3.9、pycharm和vs c++;可以自行百度搜索下载。
2.、安装 cmake(编译工具) 和 boost(进入我python3.9安装目录下,在地址栏输入cmd。C:\Users\jason\AppData\Local\Programs\Python\Python39\Scripts)
pip install cmake
pip install boost
3、安装 dlib(人脸检测库)
pip install dlib
4、安装face_recognition(人脸识别库)这个人脸识别库需要配合opencv
pip install face_recognition
pip install opencv-python
注意:最好按照上述顺序安装,不然可能会安装不成功。
既然上述的安装成功,那么我们就开始人脸识别,首先我们使用的软件vs cube或者pycharm软件,小编现在使用pycharm软件。既然需要人脸识别,那么我们可以准备图片啦,在百度找一下人物图:
在face_recognition人脸识别库中,我们需要了解三个函数:
face_recognition.load_image_file ()这个函数就是从本地加载图片。
face_recognition.face_encodings()这个函数是把编码图片。
face_recognition.compare_faces()这个函数是比较图片。
其实上述的函数很简单,recognition就是识别的意思,load是加载的意思,encoding就是编码的意思,而compare就是比较的意思。
我们用mayun.jpg这张图片作为样本,和其他图片对比,具体代码如下:
import face_recognition
import time
localtime = time.asctime(time.localtime(time.time()))
print("本地时间为 :", localtime)
mayun_image = face_recognition.load_image_file("mayun.jpg")
image1 = face_recognition.load_image_file("mahuateng.jpg")
image2 = face_recognition.load_image_file("mayun1.jpg")
image3 = face_recognition.load_image_file("xiaomayun.jpg")
image4 = face_recognition.load_image_file("mayunguilian.jpg")
image5 = face_recognition.load_image_file("mayun2.jpg")
image6 = face_recognition.load_image_file("mayunlianwu.jpg")
image7 = face_recognition.load_image_file("mayunbiyan.jpg")
image8 = face_recognition.load_image_file("mayunzaoqi.jpg")
image9 = face_recognition.load_image_file("mayunduoren.jpg")
mayun_face_encoding = face_recognition.face_encodings(mayun_image)[0]
image1_face_encoding = face_recognition.face_encodings(image1)[0]
image2_face_encoding = face_recognition.face_encodings(image2)[0]
image3_face_encoding = face_recognition.face_encodings(image3)[0]
image4_face_encoding = face_recognition.face_encodings(image4)[0]
image5_face_encoding = face_recognition.face_encodings(image5)[0]
image6_face_encoding = face_recognition.face_encodings(image6)[0]
image7_face_encoding = face_recognition.face_encodings(image7)[0]
image8_face_encoding = face_recognition.face_encodings(image8)[0]
image9_face_encoding = face_recognition.face_encodings(image9)[0]
known_faces = [
image1_face_encoding,
image2_face_encoding,
image3_face_encoding,
image4_face_encoding,
image5_face_encoding,
image6_face_encoding,
image7_face_encoding,
image8_face_encoding,
image9_face_encoding
]
results = face_recognition.compare_faces(known_faces, mayun_face_encoding)
print("这张mahuateng.jpg照片是马云吗? {}".format(results[0]))
print("这张mayun1.jpg照片是马云吗? {}".format(results[1]))
print("这张xiaomayun.jpg照片是马云吗? {}".format(results[2]))
print("这张mayunguilian.jpg照片是马云吗? {}".format(results[3]))
print("这张mayun2.jpg照片是马云吗? {}".format(results[4]))
print("这张mayunlianwu.jpg照片是马云吗? {}".format(results[5]))
print("这张mayunbiyan.jpg照片是马云吗? {}".format(results[6]))
print("这张mayunzaoqi.jpg照片是马云吗? {}".format(results[7]))
print("这张mayunduoren.jpg照片是马云吗? {}".format(results[8]))
localtime = time.asctime(time.localtime(time.time()))
print("本地时间为 :", localtime)
结果如下图所示: