概述
2.Dlib人脸特征点检测
Dlib库是一个集机器学习、计算机视觉、图像处理等众多算法的开源库,其代码简洁,注释清晰,支持C++和Python接口,库中很多头文件可以直接放在C++应用中。Dlib实现了2014年一篇非常经典的人脸特征点检测的论文:Face Alignment at 3000 FPS via Regression Local Binary Features,其人脸特征点检测又快又准。
这里不探讨dlib库的编译问题,请自行编译。使用Dlib库进行人脸特征点检测十分简单,可以参考官网的examples,下面是画出人脸特征点的python脚本和效果图。
# coding: utf-8
import cv2
import dlib
#draw_all_landmarks_id
detector = dlib.get_frontal_face_detector()
#predictor = dlib.shape_predictor('/home/tanhui/notebook/shape_predictor_68_face_landmarks.dat')
predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')
img = cv2.imread('test.jpg')
img_out = img.copy()
dets = detector(img,0) #dlib人脸检测
print dets[0]
for i,d in enumerate(dets):
cv2.rectangle(img_out,(d.left(),d.top()),(d.right(),d.bottom()),(0,255,0),3)
shape = predictor(img,d) #dlib人脸特征点检测
for k in range(0,68): #68个特征点
cv2.circle(img_out,(shape.part(k).x,shape.part(k).y),2,(255,0,0),-1) #-1表示填充
#cv2.putText(img_out,'%d' % k,(shape.part(k).x,shape.part(k).y),cv2.FONT_HERSHEY_SIMPLEX,0.4,(0,0,255),1) #标记点号
print (shape.part(k).x,shape.part(k).y)
cv2.imwrite('face_landmarks.jpg',img_out)
print 'success'
cv2.imshow('landmarks',img_out)
cv2.waitKey(0)
cv2.destroyAllWindows()
下面是用opencv调用摄像头、Dlib进行摄像头视频实时检测人脸和特征点python脚本。摄像头分辨率为640x480,在我的机器上(i7 6700K CPU @ 4.00GHz)测试人脸检测平均耗时44ms,人脸特征点检测平均耗时3ms。如果摄像头中人脸总是比较大(离镜头比较近),完全可以对图像下采样之后进行人脸检测,速度会提升很多,例如下采样一倍时,人脸检测平均耗时降低到11ms,因此在某些场景下达到实时检测也是完全可以的。
# -*- coding: utf-8 -*-
"""
Created on Thu Apr 06 20:52:04 2017
@author: Administrator
"""
import dlib
import cv2
import time
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')
def find_face_landmarks(img):
time0 = time.time()
points = []
rects = detector(img,0)
time1 = time.time()
print (time1 - time0)*1000,'ms'
if len(rects) == 0:
return [],points
shape = predictor(img,rects[0])
time2 = time.time()
print (time2 - time1)*1000,'ms'
for i in range(0,68):
points.append((shape.part(i).x,shape.part(i).y))
return rects[0],points
最后
以上就是粗暴小懒猪为你收集整理的人脸特征点检测(二)的全部内容,希望文章能够帮你解决人脸特征点检测(二)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复