设为首页 加入收藏

TOP

Python 3 利用 Dlib 19.7 进行人脸识别(四)
2018-02-13 12:56:58 】 浏览:852
Tags:Python 利用 Dlib 19.7 进行 人脸 识别
p;   "    http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2")
    exit()


predictor_path = sys.argv[1]
faces_folder_path = sys.argv[2]


detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor(predictor_path)
win = dlib.image_window()


for f in glob.glob(os.path.join(faces_folder_path, "*.jpg")):
    print("Processing file: {}".format(f))
    img = io.imread(f)


    win.clear_overlay()
    win.set_image(img)


    # Ask the detector to find the bounding boxes of each face. 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 k, d in enumerate(dets):
        print("Detection {}: Left: {} Top: {} Right: {} Bottom: {}".format(
            k, d.left(), d.top(), d.right(), d.bottom()))
        # Get the landmarks/parts for the face in box d.
        shape = predictor(img, d)
        print("Part 0: {}, Part 1: {} ...".format(shape.part(0),
                                                  shape.part(1)))
        # Draw the face landmarks on the screen.
        win.add_overlay(shape)


    win.add_overlay(dets)
    dlib.hit_enter_to_continue()


 修改:


 绘制两个overlay,矩阵框 和 面部特征


import dlib
from skimage import io


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


# dlib的68点模型
path_pre = "F:/code/python/P_dlib_face/"
predictor = dlib.shape_predictor(path_pre+"shape_predictor_68_face_landmarks.dat")


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


# 生成dlib的图像窗口
win = dlib.image_window()
win.clear_overlay()
win.set_image(img)


# 特征提取器的实例化
dets = detector(img, 1)
print("人脸数:", len(dets))


for k, d in enumerate(dets):
        print("第", k, "个人脸d的坐标:",
              "left:", d.left(),
              "right:", d.right(),
              "top:", d.top(),
              "bottom:", d.bottom())


        # 利用预测器预测
        shape = predictor(img, d)


        # 绘制面部轮廓
        win.add_overlay(shape)


# 绘制矩阵轮廓
win.add_overlay(dets)
# 保持图像
dlib.hit_enter_to_continue()


结果


图片窗口结果:



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


  


  官网例程中是利用sys.argv[]读取命令行输入,其实为了方便我把文件路径写好了,如果对于sys.argv[]有疑惑,可以参照下面的总结: 


* 关于sys.argv[]的使用:


  ( 如果对于代码中 sys.argv[] 的使用不了解可以参考这里 )


  用来获取cmd命令行参数,例如 获取cmd命令输入“python test.py XXXXX” 的XXXXX参数,可以用于cmd下读取用户输入的文件路径;


  如果不明白可以在python代码内直接 img = imread("F:/*****/test.jpg") 代替 img = imread(sys.argv[1]) 读取图片;


    用代码实例来帮助理解:


 1. (sys.argv[0],指的是代码文件本身

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

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目