0002 python3.6++dlib+skimage 人脸识别测试

编程入门 行业动态 更新时间:2024-10-07 15:24:40

0002 python3.6++dlib+skimage 人脸识别<a href=https://www.elefans.com/category/jswz/34/1771117.html style=测试"/>

0002 python3.6++dlib+skimage 人脸识别测试

使用了 

shape_predictor_68_face_landmarks.dat dlib_face_recognition_resnet_model_v1.dat


网上可以找到资源下载

PYTHON3.6 

用VSCODE写的

图片放在D:/renlian 下面

./a5 放的是人脸数据,在百度上找明星的图片自己截的图

./a5-2 也是百度上找的图片 单张,用来测试


不全是原创,看了网上的例子,自己改写了一下.

直接上源码和图片了

os_walk_test.py 

import osdef ldir(path, ext = ''):#便历目录ret = os.listdir(path)if ext:#格式化extif '.' in ext:if ext[0] == '.'and  '.' not in ext[1:]:passelse:ext = os.path.splitext(ext)[1]else:ext = '.' + ext#按ext筛选结果ret2 = []for i in ret:if ext == os.path.splitext(i)[1]:ret2.append(i)ret = ret2#返回结果return retif __name__ == '__main__':path = 'd:/'print(ldir(path, 'py'))



test.py

import os,dlib,numpy
os.chdir('d:/renlian')
from os_walk_test import ldir
from skimage import io#获取一个图片上的人脸的识别特征
def get_descriptor(imgfile,factor):detector, sharp_detector, descriptor=factorimg = io.imread(imgfile)dets = detector(img, 1)ret=[]for k, d in enumerate(dets):#2.关键点检测shape = sharp_detector(img, d)face_decriptor = descriptor(img, shape)v = numpy.array(face_decriptor)ret.append(v)return ret#获取人脸图片数据库的所有人脸特征
def get_data(data_img_path, factor):dt=[]#1.人脸检测for f in ldir(data_img_path, "*.jpg"):name=ff=os.path.join(faces_folder_path,f)dt.append([name,get_descriptor(f,factor)])return dt#根据图片和特征数据库,查找到相应的图片名字
def find_fixed(img, face_data, factor):result = []tar=get_descriptor(img,factor)for i in face_data:for j in i[1]:result.append([i[0],numpy.linalg.norm(j-tar)])r=sorted(result,key=lambda d:d[1])return r[0]if __name__=='__main__':predictor_path = "./shape_predictor_68_face_landmarks.dat"face_rec_model_path = "./dlib_face_recognition_resnet_model_v1.dat"faces_folder_path = "./a5"img_path = "./a5-2"detc = dlib.get_frontal_face_detector() #人脸检测器sp = dlib.shape_predictor(predictor_path) #关键点探测器recg = dlib.face_recognition_model_v1(face_rec_model_path).\compute_face_descriptor #识别器factors = (detc, sp, recg) #反应器集合data=get_data(faces_folder_path,factors) #获取数据for i in ldir(img_path):n=if=os.path.join(img_path,i)imgname=find_fixed(f,data,factors) #识别名字print('{}:{}'.format(n,imgname))


d:/renlian/a5


范冰冰.jpg




刘亦菲.jpg


刘亦菲-2.jpg



刘诗诗.jpg


d:/renlian/a5-2

bingbing.jpg                                            shishi.jpg                                    shishi-2.jpg

yifei.jpg


上结果

如果自己用opencv写个界面也许更好一点.







更多推荐

0002 python3.6++dlib+skimage 人脸识别测试

本文发布于:2024-02-24 21:05:20,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1696648.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:测试   skimage   dlib

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!