windows7安装dlib过程中遇到的问题总结以及运行实例效果


  综合了无数网上记录过这个问题的文章,最后终于安装成功了!

  首先有些文章说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报错的,如下图所示

  原文地址 https://stackoverflow.com/questions/14807294/how-to-install-cmake-c-compiler-and-cxx-compiler

  其中写道remove 'CMakeCache.txt' 让我恍然大悟,难道编译错误之后下一次编译还会读取之前编译的文件吗,试着删除了CMakeCache.txt,然后再执行python setup.py install,居然就这样成功了!我觉着CMake应该改进一下这个编译机制,每次编译都读取新的配置文件,这样就不会造成意想不到的困扰了。

  随后继续安装face_recognition模块,遇到了资源地址连接超时的问题,于是把资源地址指向国内资源地址,问题解决!

pip3 install face_recognition -i  https://pypi.douban.com/simple/

     安装成功!在pycharm中试了一下导入dlib也没问题

 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人

 

 

再补充一下OpenCV识别出来的结果,更加直观一些,下面贴出代码

 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()

同样没有识别出左二的队员。。。

这张西班牙国家队全家福无一遗漏!

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM