今天我们来验证一下dlib的人脸识别的5点特征点提取效果,并利用这五个点给人脸加上一个墨镜。
5个特征点
dlib提供了人脸5个特征点的提取模板,但在官网的目录下已经打不开了,浏览器中点击时出现一堆乱码,不知是什么原因。我在github上搜索,还好,找到一个利用这5个特征点给人体自动加上一顶圣诞帽的项目,在那里可以找到shape_predictor_5_face_landmarks.dat文件,当然,68个特征点的模板文件也一样无法打开,在csdn上搜索,或者在dlib原来托管的https://sourceforge.net/网站上可以下载,感兴趣的同学可以自行查找。
提取5个特征点的python语句也非常简单,首先建立一个探测器来检测人脸:
detector = dlib.get_frontal_face_detector()
读入图片进行检测:
faces = detector(img,1)
建立提取特征点的函数:
landmark_predictor = dlib.shape_predictor(‘shape_predictor_5_face_landmarks.dat’)
将检测到的人脸方框输入进行提取:
shape = landmark_predictor(img,d)
5个特征点的坐标就包含在shape中,分别用shape.part(0-4)来表示。
5个特征点分别为左右眼角和人中位置。
这里给出实例如下:
人脸加墨镜
5个特征点只能大概标识出人脸的位置,可以用于在人脸上增加一些有趣的小饰件,比如墨镜之类。
我在网路上进行搜索,奇怪的是,dlib发行了这么久,网路上关于人脸加墨镜的例子也很多,但可以自适应人脸倾斜角度的文章却几乎找不到,问这个问题的帖子倒是很多,本博文给出一个简单的解决方案,供感兴趣的同学参考。
墨镜准备
首先我们要找到一个经过抠图的墨镜,这个墨镜logo的尺寸大有讲究,假如墨镜本身的尺寸为w,h,那么背景的尺寸应该为墨镜尺寸对角线长度的正方形,即sqrt(w**2+h**2)。这样才能根据人脸的角度来旋转墨镜。
墨镜logo的样板如下:
dlib19.9+opencv3.4人脸检测自动加墨镜
最新推荐文章于 2025-07-01 15:42:20 发布