设为首页 加入收藏

TOP

Python 3 利用 Dlib 19.7 进行人脸识别(一)
2018-02-13 12:56:58 】 浏览:847
Tags:Python 利用 Dlib 19.7 进行 人脸 识别

0.引言


  自己在下载dlib官网给的example代码时,一开始不知道怎么使用,在一番摸索之后弄明白怎么使用了;


  现分享下 face_detector.py 和 face_landmark_detection.py 这两个py的使用方法;


  1.简介


  python:  3.6.3


  dlib:    19.7  


  利用dlib的特征提取器,进行人脸 矩形框 的特征提取:


  利用dlib的68点特征预测器,进行人脸 68点 特征提取:


    效果:


      


      (a) face_detector.py        (b) face_landmark_detection.py


2.py文件功能介绍


  face_detector.py :        识别出图片文件中一张或多张人脸,并用矩形框框出标识出人脸;


    link: http://dlib.net/cnn_face_detector.py.html


  face_landmark_detection.py :  在face_detector.py的识别人脸基础上,识别出人脸部的具体特征部位:下巴轮廓、眉毛、眼睛、嘴巴,同样用标记标识出面部特征;


       link: http://dlib.net/face_landmark_detection.py.html


    2.1. face_detector.py


    官网给的face_detector.py


import sys


import dlib
from skimage import io



detector = dlib.get_frontal_face_detector()
win = dlib.image_window()


for f in sys.argv[1:]:
    print("Processing file: {}".format(f))
    img = io.imread(f)
    # The 1 in the second argument indicates that we should upsample the image
    # 1 time.  This will make everything bigger and allow us to detect more
    # faces.
    dets = detector(img, 1)
    print("Number of faces detected: {}".format(len(dets)))
    for i, d in enumerate(dets):
        print("Detection {}: Left: {} Top: {} Right: {} Bottom: {}".format(
            i, d.left(), d.top(), d.right(), d.bottom()))


    win.clear_overlay()
    win.set_image(img)
    win.add_overlay(dets)
    dlib.hit_enter_to_continue()



# Finally, if you really want to you can ask the detector to tell you the score
# for each detection.  The score is bigger for more confident detections.
# The third argument to run is an optional adjustment to the detection threshold,
# where a negative value will return more detections and a positive value fewer.
# Also, the idx tells you which of the face sub-detectors matched.  This can be
# used to broadly identify faces in different orientations.
if (len(sys.argv[1:]) > 0):
    img = io.imread(sys.argv[1])
    dets, scores, idx = detector.run(img, 1, -1)
    for i, d in enumerate(dets):
        print("Detection {}, score: {}, face_type:{}".format(
            d, scores[i], idx[i]))


 为了方便理解,修改增加注释之后的 face_detector.py


import dlib
from skimage import io


# 使用特征提取器frontal_face_detector
detector = dlib.get_frontal_face_detector()


# path是图片所在路径
path = "F:/code/python/P_dlib_face/pic/"
img = io.imread(path+"1.jpg")


# 特征提取器的实例化
dets = detector(img)


print("人脸数:", len(dets))


# 输出人脸矩形的四个坐标点
for i, d in enumerate(dets):
    print("第", i, "个人脸d的坐标:",
          "left:", d.left(),
          "right:", d.right(),
          "top:", d.top(),
          "bottom:", d.bottom())


# 绘制图片
win = dlib.image_window()
# 清除覆盖
#win.clear_overlay()
win.set_image(img)
# 将生成的矩阵覆盖上
win.add_overlay(dets)
# 保持图像
dlib.hit_enter_to_continue()


对test.jpg进行人脸检测:


结果


  图片窗口结果:



  输出结果:


对于多个人脸的检测结果:



  2.2 face_landmark_detection.py


    官网给的 face_detector.py


#!/usr/bin/python
# The contents of this file are in t

首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇在Python中使用JSON 下一篇Python 3 利用 Dlib 19.7 实现人..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目