Python三十行代碼實現(xiàn)簡單人臉識別的示例代碼
一、庫介紹
opencv,face_recognition,numpy,以及dlib
注意:
安裝opencv速度可能過慢,需要更換國內(nèi)鏡像源,參考:http://chabaoo.cn/article/208359.htm
附帶Python3.7,64位版本 dlib whl下載路徑:dlib-19_jb51.rar
二、庫安裝
pip install opencv-python pip install face_recognition pip install numpy
dlib庫需進(jìn)入whl文件路徑下安裝
pip install dlib-19.17.99-cp37-cp37m-win_amd64.whl
三、face_recognition庫簡單介紹
face_recognition的load_image_file方法會加載圖片,并返回一個ndarray類型的數(shù)據(jù)
face_path = "C://Users//25103//Desktop//Python人臉識別//face//徐先生.jpg" image = face_recognition.load_image_file(face_path)
face_recognition的face_encoding方法,可從返回的ndarray類型數(shù)據(jù)中提取人臉特征,可同時提取多個特征,返回值為列表類型
face_encoding = face_recognition.face_encodings(image)[0]
face_recognition的face_location方法可以獲取圖片中所有人臉的位置,其返回值為一個列表
face_locations = face_recognition.face_locations(rgb_frame)
四、代碼實現(xiàn)以及注釋講解
# coding = utf-8 import dlib import cv2 import face_recognition import os # 創(chuàng)建視頻對象 video_capture = cv2.VideoCapture(0) # 加載需要識別的人臉圖片(這張圖片需要僅有一張臉) # face_recognition的load_image_file方法會加載圖片,并返回一個ndarray類型的數(shù)據(jù) # ndarray類型就是NumPy的數(shù)組類型,其中的元素類型可以一致也可以不一致 face_path = "C://Users//25103//Desktop//Python人臉識別//face//徐先生.jpg" image = face_recognition.load_image_file(face_path) # face_recognition的face_encoding方法,可從返回的ndarray類型數(shù)據(jù)中提取人臉特征,可同時提取多個特征,返回值為列表類型 # 因為照片中只有一個人臉,所以我們?nèi)×斜淼牡谝粋€值 face_encoding = face_recognition.face_encodings(image)[0] while True: # 從視頻對象中讀取一幀照片 ret,frame = video_capture.read() # 將照片縮小,加快處理速度,這里將其縮小為原圖的1/4 # frame = cv2.rectangle(frame,(0,0),fx=0.25,fy=0.25) # 因為cv2用的是BGR色彩,我們組要將其轉(zhuǎn)化為RGB進(jìn)行處理 rgb_frame = frame[:,:,::-1] # 列表轉(zhuǎn)置操作 # face_recognition的face_location方法可以獲取圖片中所有人臉的位置,其返回值為一個列表 face_locations = face_recognition.face_locations(rgb_frame) print("共從視頻中找到了{(lán)}張人臉".format(len(face_locations))) # 獲取視頻中所有人臉的特征 face_encodings = face_recognition.face_encodings(rgb_frame,face_locations) for face in face_encodings: # 比較兩個特征值——encoding1與encoding2,匹配返回True,否則返回False。tolerance越低,顧名思義,容錯率越低,返回值為列表類型 match = face_recognition.compare_faces([face_encoding],face,tolerance=0.4) name = "不認(rèn)識的人" if match[0]: # face為圖片名稱 name = os.path.basename(face_path[0:-4]) print("找到了{(lán)}".format(name))
到此這篇關(guān)于Python三十行代碼實現(xiàn)簡單人臉識別的示例代碼的文章就介紹到這了,更多相關(guān)Python 簡單人臉識別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python opencv人臉識別考勤系統(tǒng)的完整源碼
- 10分鐘學(xué)會使用python實現(xiàn)人臉識別(附源碼)
- 用Python實現(xiàn)簡單的人臉識別功能步驟詳解
- python基于opencv實現(xiàn)人臉識別
- python實現(xiàn)圖片,視頻人臉識別(dlib版)
- python實現(xiàn)圖片,視頻人臉識別(opencv版)
- python調(diào)用百度API實現(xiàn)人臉識別
- 使用python-cv2實現(xiàn)Harr+Adaboost人臉識別的示例
- python3.8動態(tài)人臉識別的實現(xiàn)示例
- Python3 利用face_recognition實現(xiàn)人臉識別的方法
- python實現(xiàn)的人臉識別打卡系統(tǒng)
相關(guān)文章
利用pandas將numpy數(shù)組導(dǎo)出生成excel的實例
今天小編就為大家分享一篇利用pandas將numpy數(shù)組導(dǎo)出生成excel的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06Python使用PyMySql增刪改查Mysql數(shù)據(jù)庫的實現(xiàn)
PyMysql是Python中用于連接MySQL數(shù)據(jù)庫的一個第三方庫,本文主要介紹了Python使用PyMySql增刪改查Mysql數(shù)據(jù)庫的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-01-01Python輸入圓半徑,計算圓周長和面積的實現(xiàn)方式
這篇文章主要介紹了Python輸入圓半徑,計算圓周長和面積的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12全網(wǎng)最全python庫selenium自動化使用詳細(xì)教程
這篇文章主要介紹了python庫selenium自動化使用詳細(xì)教程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2021-01-01pycharm 使用心得(八)如何調(diào)用另一文件中的函數(shù)
事件環(huán)境: pycharm 編寫了函數(shù)do() 保存在make.py 如何在另一個file里調(diào)用do函數(shù)?2014-06-06我對PyTorch dataloader里的shuffle=True的理解
這篇文章主要介紹了我對PyTorch dataloader里的shuffle=True的理解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05