前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AI展示框架(7):基于dlib实现人脸检测及关键点检测

AI展示框架(7):基于dlib实现人脸检测及关键点检测

作者头像
sparkexpert
发布2019-05-26 14:14:15
1K0
发布2019-05-26 14:14:15
举报

dlib是人脸识别与人脸特征关键点获取的常用库,最近实现了将该库集成到展示框架的实验。

其中现有的dlib常见的可获取68个关键点,当然还有5个关键点和81个关键点(包括额头)。因此编写了一个通用的小函数,如下:

该函数通过设置num_landmarks可以获取不同的关键点个数,如68,5和81,并返回facebbox(人脸框),通过该框的个数可以获取人脸的个数,并将人脸的关键点以cv2来进行绘制。

代码语言:javascript
复制
def DetectFacePoints(model_dir,data_dir,num_landmarks,filename,frame):    
    detector = dlib.get_frontal_face_detector()
    predictor = dlib.shape_predictor('%s/cv/face/dlib/shape_predictor_%d_face_landmarks.dat' % (model_dir,num_landmarks))
   
    dets = detector(frame, 1)
    facebbox = []
    # 对每个人脸进行处理
    for k, d in enumerate(dets):
        shape = predictor(frame, d)
        # 绘制人脸矩形框
        facebbox.append([d.left(), d.top(),d.right(), d.bottom()])
        cv2.rectangle(frame,(d.left(), d.top()), (d.right(), d.bottom()),(55,255,155),2)
        #landmarks = np.matrix([[p.x, p.y] for p in shape.parts()])
        #绘制人脸关键点
        for num in range(shape.num_parts):
            cv2.circle(frame, (shape.parts()[num].x, shape.parts()[num].y), 1, (255,255,255), -1)
    #cv2.imshow('frame', frame)
    cv2.imwrite(filename, frame)
    return facebbox

实验结果:

(1) 68个关键点的情况

(2) 5个关键点的检测结果

(3) 81个关键点的检测结果。

不过从图上可以看出,dlib用于人脸检测,并不能检测出太多的人脸,特别是远处的小人脸,均无法检测。

附:上图只是百度上搜索获得检测的图片,只用于实验。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年05月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

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