前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python实战篇(一)----人脸检测与识别

python实战篇(一)----人脸检测与识别

作者头像
用户5410712
发布2022-06-01 14:20:04
5370
发布2022-06-01 14:20:04
举报
文章被收录于专栏:居士说AI居士说AI

从本篇文章开始,我们将同大家一起来学习python实战篇的内容,为了能够尽快的的能够掌握python编程语言,python实战篇与python提升篇将会不定期的进行交叉更新,顾名思义,实战的内容,将会从具体的项目和要求出发,提升篇的内容将会从Python基础之上进一步加强,也许是一个题目,也许是一个小的设计,总之,我们最后的目的就是:让大家在实战中掌握python,在提升中理解python的灵活运用。另外,由于在以后的内容中,代码的量可能越来越大,对于代码量少的,我们可以直接粘贴进入公众号,对于多的,我们仅仅附上key point(关键部分),比如具体函数啊,逻辑思路等等,同时Python提供了打包功能,如果大家觉得代码运行来不及或者来不及配置环境等等,请记得私聊我们,我们可以将代码打包成可执行文件,你拿到后就像普通软件一样,直接运行就好,期待,后面的内容能够激发大家的学习兴趣!

言归正传,进入今天的主题---人脸检测与识别,人脸检测就是将人脸的特征点进行提取,识别就是在提取特征点的基础上,根据每个人特征点的不同,进行不同的识别出那幅人脸属于张三,那幅人脸属于李四,等等。。

在后面的项目中,我们可能时常用到一个叫opencv的函数库,里面包含了图像处理,计算机视觉的很多函数在里面,它的存在,让我们减少了很多的代码量,便于快速集成我们的应用,便利之及啊.....

一、人脸检测

本次人脸检测和识别,主要用到下面的代码:

代码语言:javascript
复制
#人脸分类器
detector = dlib.get_frontal_face_detector()
# 获取人脸检测器
predictor = dlib.shape_predictor(
    "./face_recognition/shape_predictor_68_face_landmarks.dat"
)

该文件为检测人脸68个特征点的文件

代码语言:javascript
复制
    ./face_recognition/shape_predictor_68_face_landmarks.dat

读入一张图片进行人脸检测:

代码语言:javascript
复制
#coding=utf-8
import cv2
import dlib

path = "person2.jpg"
img = cv2.imread(path)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

下面是全部代码:

代码语言:javascript
复制
#coding=utf-8
import cv2
import dlib

path = "person2.jpg"
img = cv2.imread(path)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#人脸分类器
detector = dlib.get_frontal_face_detector()
# 获取人脸检测器
predictor = dlib.shape_predictor(
    "./face_recognition/shape_predictor_68_face_landmarks.dat"
)
dets = detector(gray, 1)
for face in dets:
    shape = predictor(img, face)  # 寻找人脸的68个标定点
    # 遍历所有点,打印出其坐标,并圈出来
    for pt in shape.parts():
        pt_pos = (pt.x, pt.y)
        cv2.circle(img, pt_pos, 2, (0, 255, 0), 1)
    cv2.imshow("image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

请看运行结果:

图中人物脸上得到的绿色特征点就是通过代码检测出来的。

二、人脸识别

人脸识别的最终目的是将不同的人识别出来,然后用方框框选出来。

代码如下:

代码语言:javascript
复制
import cv2
filename = "../person2.jpg"
def detect(filename):
    face_cascade =cv2.CascadeClassifier("./\cascades/haarcascade_frontalface_default.xml")
    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+h),(255,0,0),2)
    cv2.namedWindow("xxx")
    cv2.imshow("xxx",img)
    cv2.imwrite("2.jpg",img)
    cv2.waitKey(0)
detect(filename)

代码中这一句为opencv中集成好的人脸识别检测器,可以拿来直接使用:

代码语言:javascript
复制
face_cascade =cv2.CascadeClassifier("./\cascades/haarcascade_frontalfa

运行效果如下:

可以明显的观察到,图中的人脸已经被框选出来,效果良好。

备注:文中图片来源于网络,如有侵权,请联系删除。

小结:今天的内容分享结束了,我们从人脸检测出发,再到人脸识别,分享了一个较为简单的例子,旨在对python的进一步学习,后面,我们会再以实际的例子进行分享,我们,下期再会。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT进阶之旅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档