windows7安裝dlib過程當中遇到的問題總結以及運行實例效果

  綜合了無數網上記錄過這個問題的文章,最後終於安裝成功了!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()

一樣沒有識別出左二的隊員。。。

這張西班牙國家隊全家福無一遺漏!

相關文章
相關標籤/搜索