栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

第二节课:人脸识别

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第二节课:人脸识别

步骤:定位、对齐、识别

1.使用openCV定位多个人脸

先确认路径,不正确用os.chdir()修改;

须找到cv2在电脑中的安装路径

import cv2
import os
import matplotlib.pyplot as plt#别名,缩短字符串

os.chdir(r'D:a learn sth大三上Python程序设计人脸识别')

def detect(filename):
    face_cascade=cv2.CascadeClassifier(r'D:anacondainstallfolderLibsite-packagescv2datahaarcascade_frontalface_default.xml')
#我在python的东西安装包在D:anacondainstallfolderLibsite-packages下

    img=cv2.imread(filename)#读取,查一下
    gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#将彩色的转换为灰度图片

    faces=face_cascade.detectMultiScale(gray,1.3,5)
    
    for(x,y,w,h)in faces:
        img=cv2.rectangle(img,(x,y),(x+w,y+w),(255,0,0),2)#用cv2函数画矩形;定义线的颜色(红,绿,蓝)
    plt.imshow(img)
    plt.axis('off')
    plt.show()
    
detect('yu.jpg')

2.人脸对齐

先安装 dlib,再装face_recognition(依赖于dlib);

 gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)改成灰度图;

import cv2
import dlib
import matplotlib.pyplot as plt

path="yu2.jpg"
img=cv2.imread(path)
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#改成灰度图

人脸分类器detector;

detector=dlib.get_frontal_face_detector()#人脸分类器

选用人脸检测器(5/68点),需要找到所在电脑中的路径

#68点人脸检测器
predictor=dlib.shape_predictor(r"D:anacondainstallfolderLibsite-packagesface_recognition_modelsmodelsshape_predictor_5_face_landmarks.dat")
#5点
#predictor=dlib.shape_predictor(r"D:anacondainstallfolderLibsite-packagesface_recognition_modelsmodelsshape_predictor_68_face_landmarks.dat")

dets=detector(gray,1)
for face in dets:
    shape=predictor(img,face)#寻找人脸的568个标记点;遍历所有点,打印出其坐标,并圈出来
    for pt in shape.parts():
        pt_pos=(pt.x,pt.y)
        img=cv2.circle(img,pt_pos,6,(255,0,0),1)#(255,0,0)是点的颜色
        
    plt.imshow(img)
    plt.axis('off')
    plt.show()

3.人脸识别

known_image;unknown_image;

import cv2
import face_recognition
import matplotlib.pyplot as plt

#known_image=cv2.imread('1.jpg')
known_image=face_recognition.load_image_file('1.jpg')

#unknown_image=cv2.imread('2.jpg')
unknown_image=face_recognition.load_image_file('2.jpg')

known_encoding;unknown_encoding

known_encoding=face_recognition.face_encodings(known_image)[0]
unknown_encoding=face_recognition.face_encodings(unknown_image)[0]
results=face_recognition.compare_faces([known_encoding],
                                     unknown_encoding,
                                     tolerance=0.4)
if results[0]==True:
    print("匹配成功,该未知图片与已有图片人脸可匹配!")
else:
    print("匹配失败!")
    
#print(known_encoding)
#print(unknown_encoding)
plt.imshow(known_image)
plt.axis('off')
plt.show()

plt.imshow(unknown_image)
plt.axis('off')
plt.show()

相关知识

报错1:eclipse中使用Opencv报错 error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

解决方法:是路径错误,注意:输出的图片中不要用带有中文的路径名和文件名

【查看文档】pydoc可查看所安装内容的文档

【安装】不能直接下载dlib就先下载对应版本的whl(我Python3.8),再直接pip下载dlib和face_recognition即可

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/269244.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号