首页 养生问答 疾病百科 养生资讯 女性养生 男性养生

如何获取人脸 68个关键点 python代码

发布网友 发布时间:2022-04-21 22:49

我来回答

2个回答

懂视网 时间:2022-05-10 20:23

本文主要和大家分享python获取人脸的代码分享,希望大家根据本文能完成python获取人脸的功能。

usage:python getface.py src out

# -*- codeing: utf-8 -*-
import sys
import os
import cv2
import dlib

input_dir = sys.argv[1]
output_dir = sys.argv[2]
print(input_dir)
print(output_dir)
size = 

if not os.path.exists(output_dir):
 os.makedirs(output_dir)

# 使用dlib自带的frontal_face_detector作为我们的特征提取器
detector = dlib.get_frontal_face_detector()

index = 1
for (path, dirnames, filenames) in os.walk(input_dir):
 for filename in filenames:
 if filename.endswith('.jpg'):
  print('Being processed picture %s' % index)
 img_path = path + '/' + filename
 # 从文件读取图片
 img = cv2.imread(img_path)
 # 转为灰度图片
 gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
 # 使用detector进行人脸检测 dets为返回的结果
 dets = detector(gray_img, 1)

 # 使用enumerate 函数遍历序列中的元素以及它们的下标
 # 下标i即为人脸序号
 # left:人脸左边距离图片左边界的距离 ;right:人脸右边距离图片左边界的距离
 # top:人脸上边距离图片上边界的距离 ;bottom:人脸下边距离图片上边界的距离
 for i, d in enumerate(dets):
  x1 = d.top() if d.top() > 0 else 0
  y1 = d.bottom() if d.bottom() > 0 else 0
  x2 = d.left() if d.left() > 0 else 0
  y2 = d.right() if d.right() > 0 else 0
  # img[y:y+h,x:x+w]
  face = img[x1:y1, x2:y2]
  # 调整图片的尺寸
  face = cv2.resize(face, (size, size))
  #cv2.imshow('image', face)
  # 保存图片
  cv2.imwrite(output_dir + '/' + str(index) + '.jpg', face)
  index += 1

 key = cv2.waitKey(30) & 0xff
 if key == 27:
  sys.exit(0) # -*- codeing: utf-8 -*-

热心网友 时间:2022-05-10 17:31

可以使用OpenCV,OpenCV的人脸检测功能在一般场合还是不错的。而ubuntu正好提供了python-opencv这个包,用它可以方便地实现人脸检测的代码。 写代码之前应该先安装python-opencv: #!/usr/bin/python# -*- coding: UTF-8 -*- # face_detect.py #...

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com