综合了无数网上记录过这个问题的文章,最后终于安装成功了!python
首先有些文章说dlib从19.9版本起开始就不用cmake和boost的支持了,多是我安装的dlib版本的问题?最后仍是经过vs2015 + cmake + dlib19.16安装上了,以下图所示函数
最开始我没有安装vs2015,而后下载了cmake和dlib19.16,配置好cmake环境变量后直接在dlib目录下经过python setup.py install进行安装,结果报错,后来安装了vs2015,再运行python setup.py install仍是报同样的错误,后来无心中看到 一篇 外国友人的帖子也是关于cmake报错的,以下图所示this
原文地址 https://stackoverflow.com/questions/14807294/how-to-install-cmake-c-compiler-and-cxx-compilerspa
其中写道remove 'CMakeCache.txt' 让我恍然大悟,难道编译错误以后下一次编译还会读取以前编译的文件吗,试着删除了CMakeCache.txt,而后再执行python setup.py install,竟然就这样成功了!我觉着CMake应该改进一下这个编译机制,每次编译都读取新的配置文件,这样就不会形成意想不到的困扰了。code
随后继续安装face_recognition模块,遇到了资源地址链接超时的问题,因而把资源地址指向国内资源地址,问题解决!orm
pip3 install face_recognition -i https://pypi.douban.com/simple/
安装成功!在pycharm中试了一下导入dlib也没问题blog
1 import face_recognition 2 from PIL import Image 3 4 image = face_recognition.load_image_file("known_person/uw.jpg") 5 face_locations = face_recognition.face_locations(image) 6 print(type(face_locations)) 7 # 打印:我从图片中找到了 多少 张人脸 8 print("I found {} faces in this photogragh.".format(len(face_locations))) 9 # 循环找到的全部人脸 10 for face in face_locations: 11 top,right,bottom,left = face 12 print("a face is located at pixel location Top:{},left:{},Bottom:{},Right:{}".format(top,left,bottom,right)) 13 # 指定人脸的位置信息,而后显示人脸图片 14 face_image = image[top:bottom,left:right] 15 pil_image = Image.fromarray(face_image) 16 pil_image.show()
上面是在网上查到了一个代码实例,有的图片识别准确,不过有些图片识别的时候会少一我的,好比下面这张图,识别出来只有三我的,举手的那个黑人没有识别出来。不知道是由于阴影的问题仍是胳膊影响了头像的识别,后续再研究吧。图片
下面这张图就成功的识别出了11人ip
再补充一下OpenCV识别出来的结果,更加直观一些,下面贴出代码utf-8
1 # -*- coding:utf-8 -*- 2 3 import cv2 4 import face_recognition 5 from PIL import ImageColor 6 import chardet 7 #读取图片并识别人脸 8 img = face_recognition.load_image_file("known_person/uw.jpg") 9 face_locations = face_recognition.face_locations(img) 10 print(face_locations) 11 12 #调用opencv函数显示图片 13 14 img = cv2.imread("known_person/uw.jpg") 15 cv2.namedWindow("from") 16 17 cv2.imshow("from",img) 18 19 #遍历每一个人脸,并标注 20 faceNum = len(face_locations) 21 for i in range(0,faceNum): 22 top = face_locations[i][0] 23 right = face_locations[i][1] 24 bottom = face_locations[i][2] 25 left = face_locations[i][3] 26 27 start = (left,top) 28 end = (right,bottom) 29 color = ImageColor.getrgb("#FFFF00") 30 thickness = 2 31 cv2.rectangle(img,start,end,color,thickness) 32 33 #显示识别结果 34 35 cv2.namedWindow("to") 36 cv2.imshow("to",img) 37 38 cv2.waitKey(0) 39 cv2.destroyAllWindows()
一样没有识别出左二的队员。。。
这张西班牙国家队全家福无一遗漏!