windows環境下python人臉識別初窺

weixin_33912246發表於2018-10-07

最近一直對人臉識別有興趣既是為了保密,也是為了解密,抽出時間,寫寫python的人臉識別學習過程,不當之處尚請批評指正!

第一個問題就是opencv安裝的問題,不得不說windows實在是太不友好了:在安裝opevncv時經常會出現 ImportError: No module named cv2 的錯誤,即找不到cv2的包。這時候安裝擴充套件包即可命令如下

pip install opencv-python

當然sreeninfo也是必須要安裝的包。另外,注意路徑裡儘量不要有中文……又是不友好的一瞬間,ok安裝完以後執行即可,具體程式碼網上有的是拷過來就可以了,不過注意兩個地方:1、檔案路徑要用絕對路徑且路徑中沒有中文字元;2、路徑前用r做字元標記。

在經歷過坎坷的opencv之路後發現百度雲的API真的是個好東西啊,尤其是對學生之類的個體開發者十分友好。官網有相關文件教學,已經很豐富了,相關的錯誤碼解讀也很棒。

說點題外話,對程式設計知識的學習更應該是興趣,而非強迫。程式猿,技術宅,更多的應該是對技術和知識的執著並非單純看重計算機行業入手容易工資較高的現狀,這就是目前的現狀,程式猿很多,但是真正優秀的程式設計人員依舊是鳳毛麟角,技術的執著是信仰,是靈魂,是每個夜裡你螢幕上跳動的激情。

關於百度API的使用首先你需要三個東西:網址、SK、AK。

首先匯入相關庫,這一步相信大家都有過了解,具體需要哪些庫視所需函式確定。然後,獲取百度雲API所提供的成功取得access_token,且其有效期為30天,切記需要每30天進行定期更換,或者每次請求都拉取新token,獲取後此時儲存的access_token資料型別為str

request = urllib.request.Request(host_access_token)

request.add_header('Content-Type', 'application/json; charset=UTF-8')

response = urllib.request.urlopen(request)

具體格式問題請參考 字典 和 json 部分。

關於人臉識別的圖片上傳方式,筆者建議採用BASE64和FACE_TOKEN相結合的方式,理由嗎,親測好用。

這裡放一下人臉識別的關鍵程式碼:

img = open(r"F:/python_FaceAPI/picture/" + img,"rb")

img_base64 = base64.b64encode(img.read())

params = urllib.parse.urlencode({"image":img_base64,"image_type":"BASE64","face_field":"age,beauty,expression,gender,glasses,race"})

.encode(encoding='UTF8')

request = urllib.request.Request(url=host_detect, data=params)

request.add_header('Content-Type', 'application/json')

response = urllib.request.urlopen(request)

還有人臉比對的:


7809576-4e3dc843debd7cab.png
FaceComparison.py

相關文章