搜尋

首頁  >  問答  >  主體

c++ - 美颜需要替换眉毛确定眉毛的长度

最近遇到一个项目问题,因为需要做一个美颜的APP.现在需要替换眉毛,这个眉尾的位置不知道怎么确定,各位大神有这方面的经验吗,不甚感激。。。如果有现有代码可以有偿。。。

伊谢尔伦伊谢尔伦2803 天前566

全部回覆(1)我來回復

  • 黄舟

    黄舟2017-04-17 15:38:29

    可以使用人臉辨識庫。
    例如:dlib函式庫,配合一個資料集:shape_predictor_68_face_landmarks.dat
    一下為Python的實例,當然你可以很快的轉換為c++程式碼

    # -*- 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)

    結果
    索引值參考:

    部位 索引
    下巴 0~16
    左眉毛 17~21
    右眉毛 22~26
    鼻子 27~35
    左眼睛 36~41
    右眼睛 42~47
    嘴巴 48~67

    回覆
    0
  • 取消回覆