最近遇到一个项目问题,因为需要做一个美颜的APP.现在需要替换眉毛,这个眉尾的位置不知道怎么确定,各位大神有这方面的经验吗,不甚感激。。。如果有现有代码可以有偿。。。
黄舟2017-04-17 15:38:29
Facial recognition library can be used.
For example: dlib library, with a data set: shape_predictor_68_face_landmarks.dat
Here is an example of Python, of course you can quickly convert it into c++ code
# -*- coding:utf8 -*-
import cv2
import dlib
# 加载面部检测器
detector = dlib.get_frontal_face_detector()
# 加载训练模型并获取面部特征提取器
predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')
# 以 RGB 模式读入图像
im = cv2.imread('test.jpg', cv2.IMREAD_COLOR)
# 使用检测器检测人脸
rects = detector(im, 1)
# 使用特征提取器获取面部特征点
l = [(p.x, p.y) for p in predictor(im, rects[0]).parts()]
# 遍历面部特征点并绘制出来
for (cnt, p) in enumerate(l):
#轮廓
cv2.circle(im, p, 2, (0, 255, 255), 2)
#数据点id
cv2.putText(im, str(cnt), (p[0]+2, p[1]-2), 0, 0.3, color=(0, 0, 255))
# 保存图像
cv2.imwrite('output.jpg', im)
cv2.waitKey(0)
Result
Index value reference:
部位 | 索引 |
---|---|
下巴 | 0~16 |
左眉毛 | 17~21 |
右眉毛 | 22~26 |
鼻子 | 27~35 |
左眼睛 | 36~41 |
右眼睛 | 42~47 |
嘴巴 | 48~67 |