您的位置:首页 > 编程语言 > Python开发

dlib python人脸检测 特征点定位

2017-11-20 11:31 761 查看
参考:

1、http://blog.csdn.net/hjimce/article/details/51307886

2、http://dlib.net/

1、python

人脸检测

# -*- coding: UTF-8 -*-
import cv2
import dlib
import numpy as np

# 根据人脸框bbox,从一张完整图片裁剪出人脸
def getface():
bgrImg = cv2.imread('nba.jpg')
print(bgrImg.shape)
rgbImg = cv2.cvtColor(bgrImg, cv2.COLOR_BGR2RGB)

detector = dlib.get_frontal_face_detector()
# img = io.imread('1.jpg')
faces = detector(rgbImg, 1)
if len(faces) > 0:
for face in faces:
# face = max(faces, key=lambda rect: rect.width() * rect.height())
[x1, x2, y1, y2] = [face.left(), face.right(), face.top(), face.bottom()]
cv2.rectangle(bgrImg,(x1,y1),(x2,y2),(0,255,0),2,cv2.LINE_AA)
cv2.imshow("dst",bgrImg)
cv2.waitKey(0)
cv2.destroyAllWindows()

getface()


人脸特征点定位

先从网上下载预训练模型shape_predictor_68_face_landmarks.dat,点击这里找到并下载

# -*- coding: UTF-8 -*-

import cv2
import dlib
import matplotlib.pyplot as plt

# 根据人脸框bbox,从一张完整图片裁剪出人脸,并保存问文件名cropimgname
# 如果未检测到人脸,那么返回false,否则返回true
face_detector = dlib.get_frontal_face_detector()
landmark_predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")

def geteye_rect(imgpath):
bgrImg = cv2.imread(imgpath)
if bgrImg is None:
return False
rgbImg = cv2.cvtColor(bgrImg, cv2.COLOR_BGR2RGB)
facesrect = face_detector(rgbImg, 1)
if len(facesrect) <= 0:
return False

for k, d in enumerate(facesrect):
shape = landmark_predictor(rgbImg, d)
for i in range(68):
pt = shape.part(i)
plt.plot(pt.x, pt.y, 'ro')
plt.imshow(rgbImg)
plt.show()

geteye_rect("nba.jpg")


2、c++

参考:http://blog.csdn.net/hjimce/article/details/51307886
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: