• 大小: 72.64MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2022-09-19
  • 语言: Python
  • 标签: dlib  python  

资源简介

用Python+dlib,剪切出目标文件夹中人脸大头照以及坐标点文档;用Python+dlib,剪切出目标文件夹中人脸大头照以及坐标点文档

资源截图

代码片段和文件信息

# -*- coding:utf-8 -*-
# -*- author:zzZ_CMing  CSDN address:https://blog.csdn.net/zzZ_CMing
# -*- 2019/01/13; 17:38
# -*- python3.6
import os
import sys
import cv2
import time
import dlib
import shutil
import numpy as np
from PIL import Image


input_pic_path = “iuput_pic/“
output_pic_data_path = “output_pic_data/“
output_dict_data_path = “output_dict_data/“
error_pic_path = “no_face/“

predictor_model = ‘shape_predictor_68_face_landmarks.dat‘
face_detector = dlib.get_frontal_face_detector()
face_pose_predictor = dlib.shape_predictor(predictor_model)


def get_face_points(dict_A):
    “““
    :param dict_A: 传入一个字典A,内容是包含一张人脸的所有标记点坐标
    :return: 返回人脸上、下、左、右的索引值
    “““
    x_max = y_max = 0
    x_min = y_min = 2000

    for k_1 v_1 in dict_A.items():
        for k_2 v_2 in v_1.items():
            if k_2 == “x“:
                if int(v_2) < x_min:
                    x_min = int(v_2)
                if int(v_2) > x_max:
                    x_max = int(v_2)
            else:
                if int(v_2) < y_min:
                    y_min = int(v_2)
                if int(v_2) > y_max:
                    y_max = int(v_2)
    return x_min x_max y_min y_max


def get_68_points(img_data face_detector face_pose_predictor):
    “““
    用 dlib 获取面部68个特征点
    :param img_data: 输入的是一张图片详细地址
    :return: 将面部68个特征点坐标存入dict中返回
    “““
    detected_face = face_detector(img_data 0)
    if len(detected_face) == 0:
        print(‘No face detected in image‘)
        return len(detected_face) None None None

    if len(detected_face) == 1:
        dd = ““
        faces_all_data = {}
        points_data_all = np.matrix([[p.x p.y] for p in face_pose_predictor(img_data detected_face[0]).parts()])
        for idx point in enumerate(points_data_all):
            “““
            # 68点的坐标处理
            if point[0 0] < 0:
                point[0 0] = 0
            if point[0 1] < 0:
                point[0 1] = 0
            “““
            pos = (point[0 0] point[0 1])
            # tuple转str并得到x、y的值
            data_XY = pos.__str__()
            dict_points = {“x“: data_XY.split(““)[0][1:] “y“: data_XY.split(““)[1][1:-1]}
            cc = str(idx) + “:“ + str(dict_points) + ““ + dd
            dd = cc

        output_dict = eval(“{“ + cc[:-1] + “}“)

        if len(output_dict) == 0:
            err = 404
        else:
            err = 0

        # 根据人脸框四个索引求取人脸四个坐标,左上点横、纵坐标、宽度、长度
        x_min x_max y_min y_max = get_face_points(output_dict)
        left top width height = x_min y_min x_max - x_min y_max - y_min
        # print(left top width height)
        face_rectangle = {“left“: left “top“: top “width“: width “height“: height}

        faces_all_data[“landmark“] = output_dict
        faces_all_data[“face_rectangle“] = face_rectangle
        faces_all_data[“points_data_all“] = points_data_all.tolist()

        return len(detected_f

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-01-13 18:03  dlib_get_face\.idea\
     文件         188  2018-12-28 10:36  dlib_get_face\.idea\misc.xml
     文件         271  2018-12-28 10:36  dlib_get_face\.idea\modules.xml
     文件       12019  2019-01-13 18:03  dlib_get_face\.idea\workspace.xml
     文件         408  2018-12-28 10:36  dlib_get_face\.idea\wuyong.iml
     文件        6329  2019-01-13 17:36  dlib_get_face\dlib_get_face.py
     文件     2202968  2019-01-13 17:48  dlib_get_face\dlib-19.7.0-cp36-cp36m-win_amd64.whl
     文件        1198  2019-01-13 17:56  dlib_get_face\dlib人脸绘点.py
     目录           0  2019-01-13 17:12  dlib_get_face\iuput_pic\
     文件       92043  2019-01-13 14:55  dlib_get_face\iuput_pic\0.jpg
     文件      104812  2019-01-11 19:03  dlib_get_face\iuput_pic\45.jpg
     文件      103017  2019-01-13 15:11  dlib_get_face\iuput_pic\60.jpg
     文件      113797  2019-01-13 15:14  dlib_get_face\iuput_pic\90.jpg
     目录           0  2019-01-13 17:32  dlib_get_face\no_face\
     文件      113797  2019-01-13 17:32  dlib_get_face\no_face\90.jpg
     目录           0  2019-01-13 17:32  dlib_get_face\output_dict_data\
     文件        3001  2019-01-13 17:32  dlib_get_face\output_dict_data\0.txt
     文件        3075  2019-01-13 17:32  dlib_get_face\output_dict_data\45.txt
     文件        2967  2019-01-13 17:32  dlib_get_face\output_dict_data\60.txt
     目录           0  2019-01-13 17:32  dlib_get_face\output_pic_data\
     文件       14934  2019-01-13 17:32  dlib_get_face\output_pic_data\0.jpg
     文件       12917  2019-01-13 17:32  dlib_get_face\output_pic_data\45.jpg
     文件       10673  2019-01-13 17:32  dlib_get_face\output_pic_data\60.jpg
     文件      469157  2019-01-13 17:56  dlib_get_face\result.png
     文件    99693937  2019-01-07 20:17  dlib_get_face\shape_predictor_68_face_landmarks.dat

评论

共有 条评论