魔扣论坛

魔扣源码论坛业务
查看: 19|回复: 1

美颜视频sdk怎样在拍视频时实现自动瘦脸与大眼功能

[复制链接]
  • TA的每日心情

    昨天 15:14
  • 签到天数: 35 天

    [LV.5]经常留意

    35

    主题

    39

    帖子

    198

    积分

    初级魔扣

    Rank: 2

    魔扣币
    359
    贡献
    145
    威望
    0
    发表于 2019-9-16 16:16:06 | 显示全部楼层 |阅读模式
    魔扣币兑换比例:【 50以下 : ¥1 = 10 魔扣币 】丨【 50 - 100 :¥1 = 20 魔扣币】丨【 100以上:¥1 = 30 魔扣币 】
    淘宝、天猫优惠券

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    目前短视频APP在移动端受欢迎程度非常高,对于用户而言拍摄好看又有趣的视频是非常享受的事情,不仅如此在获赞和评论的同时还可以跟其他用户进行交流,在一定程度上也满足了大部分用户的虚荣心。为了使用户录制更加优质的视频,美颜视频sdk是众多短视频APP开发商都会用到的,其中自动瘦脸与大眼功能是最基础的。
    美颜视频sdk开发过程中需要用到的自动瘦脸与大眼可以看作是图像局部扭曲算法其中的一个应用,而所谓的图像局部扭曲算法包括:局部缩放、局部平移、局部旋转等三个算法。
    局部缩放算法主要是用来实现大眼功能,局部平移算法主要是实现自动瘦脸功能。
    1.图像局部平移
    关于图像局部缩放的算法实现,在这里提供一部分代码仅供参考。
    precision highp float;
    varying highp vec2 textureCoordinate;
    uniform sampler2D inputImageTexture;
    uniform highp float radius;
    uniform highp float aspectRatio;
    uniform floatleftContourPoints[MAX_CONTOUR_POINT_COUNT*2];
    uniform floatrightContourPoints[MAX_CONTOUR_POINT_COUNT*2];
    uniform floatdeltaArray[MAX_CONTOUR_POINT_COUNT];
    uniform int arraySize;
    highp vec2 warpPositionToUse(vec2currentPoint, vec2 contourPointA,  vec2contourPointB, float radius, float delta, float aspectRatio)
    {
         vec2 positionToUse = currentPoint;
         
         vec2 currentPointToUse =vec2(currentPoint.x, currentPoint.y * aspectRatio + 0.5 - 0.5 * aspectRatio);
         vec2 contourPointAToUse =vec2(contourPointA.x, contourPointA.y * aspectRatio + 0.5 - 0.5 * aspectRatio);
         
         float r = distance(currentPointToUse,contourPointAToUse);
         if(r < radius)
         {
             vec2 dir = normalize(contourPointB -contourPointA);
             float dist = radius * radius - r * r;
             float alpha = dist / (dist + (r-delta)* (r-delta));
             alpha = alpha * alpha;
             
             positionToUse = positionToUse - alpha* delta * dir;
             
         }
    2.图像局部缩放
    关于图像局部缩放的算法实现,在这里提供一部分代码仅供参考。
    precision highp float;
    varying highp vec2 textureCoordinate;
    uniform sampler2D inputImageTexture;
    uniform highp float scaleRatio;// 缩放系数,0无缩放,大于0则放大
    uniform highp float radius;// 缩放算法的作用域半径
    uniform highp vec2 leftEyeCenterPosition; // 左眼控制点,越远变形越小
    uniform highp vec2 rightEyeCenterPosition; // 右眼控制点
    uniform float aspectRatio; // 所处理图像的宽高比
    highp vec2 warpPositionToUse(vec2centerPostion, vec2 currentPosition, float radius, float scaleRatio, floataspectRatio)
    {
         vec2 positionToUse = currentPosition;
         
         vec2 currentPositionToUse =vec2(currentPosition.x, currentPosition.y * aspectRatio + 0.5 - 0.5 *aspectRatio);
         vec2 centerPostionToUse =vec2(centerPostion.x, centerPostion.y * aspectRatio + 0.5 - 0.5 * aspectRatio);
         
         float r = distance(currentPositionToUse,centerPostionToUse);
         
         if(r < radius)
         {
             float alpha = 1.0 - scaleRatio * pow(r/ radius - 1.0, 2.0);
             positionToUse = centerPostion + alpha* (currentPosition - centerPostion);
         }
          
         return positionToUse;
    }
    关于前面提供的一些代码只是用来参考的,并没办法真正的实现自动瘦脸与大眼功能,具体的还是要找专业的美颜视频sdk服务商,不仅是平台方就连短视频APP开发者们也都选择直接拿过来接入接口使用,既省时又节省成本。
    无论是拍照还是录制视频,尤其是在像短视频APP这样流量巨大的社交娱乐平台,任何人都想要将自己最美的一面呈现出来,所以美颜视频sdk可以说是十分“功不可没”了。
    声明:以上内容均为作者本人原创,转载需注明作者及原文链接,欢迎转载分享。

    该用户从未签到

    3

    主题

    183

    帖子

    363

    积分

    中级魔扣

    Rank: 3Rank: 3

    魔扣币
    180
    贡献
    180
    威望
    0
    发表于 2019-9-16 16:16:21 | 显示全部楼层
    在这网络博客世界里,因为有您,我的生活才能更加丰富多彩。不压抑,还开心,珍贵的友情总是一点一滴凝聚起来的,它包含了许多欢笑、温馨、浪漫,许多记忆,魔扣源码论坛真诚地谢谢您我的好友愿您每天忙碌的工作中有个好心情天热注意休息保重。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    • 联系我们
    • 新浪微博 :
    • 在线客服 :魔扣科技 
    • 源码QQ群 :魔扣源码论坛官方总群
    • 联系邮箱 :charlin#morko.net
    • 微信扫一扫
    快速回复 返回顶部 返回列表