-
大小: 88.68MB文件類型: .zip金幣: 1下載: 0 次發布日期: 2022-07-23
- 語言: Python
- 標簽: python3??人臉識別??40行代碼??shape_predic??dlib_face_re??
資源簡介
python3 版本的40行代碼的人臉識別實踐,運行文件夾中test.py原文地址在這里https://blog.csdn.net/xingchenbingbuyu/article/details/68482838,是python2版本的我改成python3版本,把里面需要到官網下載的東西也打包進去節省大家時間,大家能直接試了,省得手累
代碼片段和文件信息
#?-*-?coding:?UTF-8?-*-
import?sysosdlibglobnumpy
from?skimage?import?io
if?len(sys.argv)?!=?5:
????print(“請檢查參數是否正確“)
????exit()
#?1.人臉關鍵點檢測器
predictor_path?=?sys.argv[1]
#?2.人臉識別模型
face_rec_model_path?=?sys.argv[2]
#?3.候選人臉文件夾
faces_folder_path?=?sys.argv[3]
#?4.需識別的人臉
img_path?=?sys.argv[4]
#?1.加載正臉檢測器
detector?=?dlib.get_frontal_face_detector()
#?2.加載人臉關鍵點檢測器
sp?=?dlib.shape_predictor(predictor_path)
#?3.?加載人臉識別模型
facerec?=?dlib.face_recognition_model_v1(face_rec_model_path)
#?win?=?dlib.image_window()
#?候選人臉描述子list
descriptors?=?[]
#?對文件夾下的每一個人臉進行:
#?1.人臉檢測
#?2.關鍵點檢測
#?3.描述子提取
for?f?in?glob.glob(os.path.join(faces_folder_path?“*.jpg“)):
????print(“Processing?file:?{}“.format(f))
????img?=?io.imread(f)
????#win.clear_overlay()
????#win.set_image(img)
????#?1.人臉檢測
????dets?=?detector(img?1)
????print(“Number?of?faces?detected:?{}“.format(len(dets)))
????for?k?d?in?enumerate(dets):??
????????#?2.關鍵點檢測
????????shape?=?sp(img?d)
????????#?畫出人臉區域和和關鍵點
????????#?win.clear_overlay()
????????#?win.add_overlay(d)
????????#?win.add_overlay(shape)
????????#?3.描述子提取,128D向量
????????face_descriptor?=?facerec.compute_face_descriptor(img?shape)
????????#?轉換為numpy?array
????????v?=?numpy.array(face_descriptor)??
????????descriptors.append(v)
#?對需識別人臉進行同樣處理
#?提取描述子,不再注釋
img?=?io.imread(img_path)
dets?=?detector(img?1)
dist?=?[]
for?k?d?in?enumerate(dets):
????shape?=?sp(img?d)
????face_descriptor?=?facerec.compute_face_descriptor(img?shape)
????d_test?=?numpy.array(face_descriptor)?
????#?計算歐式距離
????for?i?in?descriptors:
????????dist_?=?numpy.linalg.norm(i-d_test)
????????dist.append(dist_)
#?候選人名單
candidate?=?[‘Unknown1‘‘Unknown2‘‘Unknown3‘‘liudehua‘‘unknown4‘]
#?候選人和距離組成一個dict
c_d?=?dict(zip(candidatedist))
cd_sorted?=?sorted(c_d.items()?key=lambda?d:d[1])
print(cd_sorted)
print(“\n?The?person?is:?“cd_sorted[0][0])
dlib.hit_enter_to_continue()
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-09-06?15:16??ck\
?????文件????22466066??2018-09-06?14:40??ck\dlib_face_recognition_resnet_model_v1.dat
?????目錄???????????0??2018-09-06?14:47??ck\img1\
?????文件????????7320??2018-09-06?14:43??ck\img1\?(1).jpg
?????文件???????57173??2018-09-06?14:43??ck\img1\?(2).jpg
?????文件???????65259??2018-09-06?14:43??ck\img1\?(3).jpg
?????文件????????7085??2018-09-06?14:44??ck\img1\?(4).jpg
?????文件????????5809??2018-09-06?14:44??ck\img1\?(5).jpg
?????文件????99693937??2018-09-06?14:01??ck\shape_predictor_68_face_landmarks.dat
?????文件????????2390??2018-09-06?15:14??ck\test.py
?????文件????????7085??2018-09-06?14:44??ck\test1.jpg
評論
共有 條評論