基于dlib的人脸识别,python opencv人脸识别库
摘要:利用OpenCv、dlib人脸识别库进行人脸实时识别
步骤说明:get_face.py:拍摄脸部并保存脸部图像。
保存_csv.py:读入保存的面部图像,提取面部的128D特征值并保存到战斗支援车文件。
face_detect.py:打开摄像头进行人脸实时识别。
程序示例:get_face.py
导入cv2#打开照相机,其中0是内置照相机,1是外置照相机camera=cv2.videocapture(0)而True: ret,frame=camera.read ) cv2.cv2。框架(#q键拍照并保存,ifcv 2。wait key(1)==ord))q):cv2。im写)脸部. png),帧)分隔符#)摄像头资源
importcsvimportdlibfromskimagegimportoimportcv 2 # dlib正向面部检测器检测器=dlib。get _ frontier _ face _ detector(# dlib面部预测data _ Dlib/shape _ predictor _ 68 _ face _ landmark。dat ))))))65 Dlib面部识别模型facerec=dlib。face)dlib _ face _ recognition _ resnet _(resnet _)resnet)))dlib 3360 img _ gray=cv2。CVT颜色(img,cv2。color)=0:shape=predictor(img _ gray,faces[0])descriptor=facerec。com pute _ face _ descriptor)img _ gray,shape(else:descriptor=0 return descriptor)提取照片的特征,并提取csvdefwrite_CSV(face_path、CSV _ path(3360 image=io。 im read)face _ path)feature _ 128d=feature(image with open)数据CSV , w
import c v2 importdlibimportpandas aspdimportnumpyasnp # dlib正向面部检测器检测器=dlib。get _ frontier _ face _ detector(# dlib面部data _ Dlib/shape _ predictor _ 68 _ face _ landmark。dat ))))))65 Dlib面部识别模型facerec=dlib。face)dlib 2 _ face _ recognition _ resnet _(resnet _))计算dlib两个128D向量之间的欧式距离def distance(feature _ 1)if dist 0.4:return false else:return true #处理存储所有面部特征的CSVCSV_rd=PD.read_CSV(数据. CSV),header=nonone已知面部数据forIinrange(CSV _ rd。shape(0))3360 someone _ arr=[]for jinrange(读取:]())3360 someone _ ararr:][j])已知_ arr。append)someone _ arr)camerr frame=camera。阅读(#灰度级img _ gray=cv2。CVT颜色(框架)cv2 .COLOR_BGR2RGB ) #面部数量facesfaces=detector ) img 0) #保存当前相机拍摄的所有面部的名称按名称列表=[] #键IFC v2。等待键(wait key)=0:feature _ arr=[]#获得当前拍摄的图像的所有脸部特征量,获得feature _ arrforiinrange(len(faces)):shape=predictor。(特写_ arr。append)facerec.com形状描述符(img _ gray,shape))遍历所捕获的图像中的所有人的脸部未知名称列表.追加(未知) )对于某个脸部,所存储的所有脸部特征对于范围对照某张脸和所有保存的脸的数据的compare=diunknown known _ arr[I]相似的脸if compare==true:ifi=0:name list[k]= Wei矩形框对于kk,数字(面)3333(左、上、右、下)、255、0、2 ) #面部框下面部的名称foriii
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。