作家
登录

小200行Python代码做了一个换脸程序

作者: 来源: 2018-03-22 17:06:36 阅读 我要评论

全平易近充电节 | 3月26日~30日 2000位IT行业拭魅战专家邀请你一路充电进修!


简介

get_face_mask()的定义是为一张图像和一个标记矩阵生成一个遮罩,它画出了两个白色的凸多边形:一个是眼睛四周的区域,一个是鼻子和嘴部四周的区域。之后它由11个像素向遮罩的边沿外部成仙扩大,可以赞助隐蔽任何不持续的区域。

  • 在这篇文┞仿中我将介绍若何写一个简短(200行)的 Python 脚本,来主动地将一幅图片的脸调换为另一幅图片的脸。

    这个过程分四步:

    • 结不雅最小,个中R是个2×2正交矩阵,s是标量,T是二维向量,pi和qi是上面标记矩阵的行。

      检测脸部标记。

    • 扭转、缩放、平移和第二张图片,以合营第一步。

    • 调剂第二张图片的色彩均衡,以适配第一张图片。

    • 把第二张图像的特点混淆在第一张图像中。

    1.应用 dlib 提取面部标记

    该脚本应用 dlib 的 Python 绑定来提取面部标记:

    Dlib 实现了 Vahid Kazemi 和 Josephine Sullivan 的《应用回归树一毫秒脸部对准》论文中的算法。算法本身异常复杂,但dlib接口应用起来异常简单:

    1. PREDICTOR_PATH = "/home/matt/dlib-18.16/shape_predictor_68_face_landmarks.dat"   
    2. detector = dlib.get_frontal_face_detector()  
    3. predictor = dlib.shape_predictor(PREDICTOR_PATH)   
    4. def get_landmarks(im):  
    5.     rects = detector(im, 1)  
    6.     if len(rects) > 1:  
    7.         raise TooManyFaces  
    8.     if len(rects) == 0:  
    9.         raise NoFaces  
    10.     return numpy.matrix([[p.x, p.y] for p in predictor(im, rects[0]).parts()])   

    get_landmarks()函数将一个图像转化成numpy数组,并返回一个68×2元素矩阵,输入图像的每个特点点对应每行的一个x,y坐标。

     1/9    1 2 3 4 5 6 下一页 尾页

      推荐阅读

      蜜月期还没过完 苹果就要和三星分手了

    全平易近充电节 | 3月26日~30日 2000位IT行业拭魅战专家邀请你一路充电进修! 作为手机阵营的两大年夜巨擘,苹不雅和三星因为一部iPhone X走在了一路,两边都大年夜中获得了本身想要的器械>>>详细阅读


    本文标题:小200行Python代码做了一个换脸程序

    地址:http://www.17bianji.com/lsqh/40825.html

  • 关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)