本文由@星沉阁冰不语出品,转载请注明作者和出处。
文章链接:http://blog.csdn.net/xingchenbingbuyu/article/details/51116354
微博:http://weibo.com/xingchenbing
看人脸方面的资料的时候,会发现很多人都会提到dlib这个库,于是就安装尝试下这个库看看它到底有多么的神奇。今天只是初次尝试一下dlib到底怎么用。
安装dlib:
我的操作系统是window 7,安装了pip,所以直接可以命令行安装Python的各种扩展库
复制代码
1pip install dlib
主要步骤:
1.加载dlib自带的frontal_face_detector作为我们的人脸征检测器
2.加载官方提供的模型构建特征提取器
3.使用detector进行人脸检测
4.输出人脸个数
5.使用predictor进行人脸关键点识别
6.绘出关键点
Python程序:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53import cv2 import dlib import numpy import sys PREDICTOR_PATH = "/shape_predictor_68_face_landmarks.dat" #1.使用dlib自带的frontal_face_detector作为我们的人脸提取器 detector = dlib.get_frontal_face_detector() #2.使用官方提供的模型构建特征提取器 predictor = dlib.shape_predictor(PREDICTOR_PATH) class NoFaces(Exception): pass im = cv2.imread("/2.jpg") #3.使用detector进行人脸检测 rects为返回的结果 rects = detector(im,1) #4.输出人脸数,dets的元素个数即为脸的个数 if len(rects) >= 1: print("{} faces detected".format(len(rects))) if len(rects) == 0: raise NoFaces for i in range(len(rects)): #5.使用predictor进行人脸关键点识别 landmarks = numpy.matrix([[p.x,p.y] for p in predictor(im,rects[i]).parts()]) im = im.copy() #使用enumerate 函数遍历序列中的元素以及它们的下标 for idx,point in enumerate(landmarks): pos = (point[0,0],point[0,1]) #cv2.putText(im,str(idx),pos, #fontFace=cv2.FONT_HERSHEY_SCRIPT_SIMPLEX, #fontScale=0.4, #color=(0,0,255)) #6.绘制特征点 cv2.circle(im,pos,3,color=(0,255,0)) cv2.namedWindow("im",2) cv2.imshow("im",im) cv2.waitKey(0)
效果图:
最近开通了微信公众号,感兴趣的同学可以扫码在微信上交流。
最后
以上就是潇洒发夹最近收集整理的关于OpenCV实践之路——用dlib库进行人脸检测与人脸标记(Python)的全部内容,更多相关OpenCV实践之路——用dlib库进行人脸检测与人脸标记(Python)内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复