您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)Python中如何實(shí)現(xiàn)簡(jiǎn)單人臉識(shí)別的示例的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
opencv,face_recognition,numpy,以及dlib
注意:
安裝opencv速度可能過(guò)慢,需要更換國(guó)內(nèi)鏡像源。
pip install opencv-python pip install face_recognition pip install numpy
dlib庫(kù)需進(jìn)入whl文件路徑下安裝
pip install dlib-19.17.99-cp37-cp37m-win_amd64.whl
face_recognition的load_image_file方法會(huì)加載圖片,并返回一個(gè)ndarray類型的數(shù)據(jù)
face_path = "C://Users//25103//Desktop//Python人臉識(shí)別//face//徐先生.jpg" image = face_recognition.load_image_file(face_path)
face_recognition的face_encoding方法,可從返回的ndarray類型數(shù)據(jù)中提取人臉特征,可同時(shí)提取多個(gè)特征,返回值為列表類型
face_encoding = face_recognition.face_encodings(image)[0]
face_recognition的face_location方法可以獲取圖片中所有人臉的位置,其返回值為一個(gè)列表
face_locations = face_recognition.face_locations(rgb_frame)
# coding = utf-8 import dlib import cv2 import face_recognition import os # 創(chuàng)建視頻對(duì)象 video_capture = cv2.VideoCapture(0) # 加載需要識(shí)別的人臉圖片(這張圖片需要僅有一張臉) # face_recognition的load_image_file方法會(huì)加載圖片,并返回一個(gè)ndarray類型的數(shù)據(jù) # ndarray類型就是NumPy的數(shù)組類型,其中的元素類型可以一致也可以不一致 face_path = "C://Users//25103//Desktop//Python人臉識(shí)別//face//徐先生.jpg" image = face_recognition.load_image_file(face_path) # face_recognition的face_encoding方法,可從返回的ndarray類型數(shù)據(jù)中提取人臉特征,可同時(shí)提取多個(gè)特征,返回值為列表類型 # 因?yàn)檎掌兄挥幸粋€(gè)人臉,所以我們?nèi)×斜淼牡谝粋€(gè)值 face_encoding = face_recognition.face_encodings(image)[0] while True: # 從視頻對(duì)象中讀取一幀照片 ret,frame = video_capture.read() # 將照片縮小,加快處理速度,這里將其縮小為原圖的1/4 # frame = cv2.rectangle(frame,(0,0),fx=0.25,fy=0.25) # 因?yàn)閏v2用的是BGR色彩,我們組要將其轉(zhuǎn)化為RGB進(jìn)行處理 rgb_frame = frame[:,:,::-1] # 列表轉(zhuǎn)置操作 # face_recognition的face_location方法可以獲取圖片中所有人臉的位置,其返回值為一個(gè)列表 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: # 比較兩個(gè)特征值——encoding1與encoding2,匹配返回True,否則返回False。tolerance越低,顧名思義,容錯(cuò)率越低,返回值為列表類型 match = face_recognition.compare_faces([face_encoding],face,tolerance=0.4) name = "不認(rèn)識(shí)的人" if match[0]: # face為圖片名稱 name = os.path.basename(face_path[0:-4]) print("找到了{(lán)}".format(name))
感謝各位的閱讀!關(guān)于“Python中如何實(shí)現(xiàn)簡(jiǎn)單人臉識(shí)別的示例”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。