首页 > 其他分享 >轻松实现海报换脸!相芯SDK海报换脸功能的简单集成方法(Android)

轻松实现海报换脸!相芯SDK海报换脸功能的简单集成方法(Android)

时间:2023-11-27 18:01:17浏览次数:36  
标签:海报 相芯 fileDir face 换脸 SDK

相芯SDK的海报换脸功能是一种面部合成技术,允许用户将自己的脸部特征与指定的海报或图片进行合成,实现换脸的效果。该功能可以用于各种娱乐应用、社交媒体、相机应用和虚拟试妆等场景。

1. 功能介绍

逼真和自然的换脸效果:相芯SDK使用先进的人脸识别和图像合成技术,确保换脸效果的逼真和自然性。通过脸部对齐、特征融合和优化处理,海报换脸结果可以达到与原图相符合的效果,使得换脸图像看起来更加真实和无缝。

多样化的海报选择:相芯SDK通常提供了多个海报模板供用户选择,涵盖了各种不同的主题和风格,例如电影海报、明星照片、卡通角色等。这使用户可以根据自己的兴趣和需求进行个性化的换脸体验。

简单易用的界面和操作:相芯SDK通常提供了用户友好的界面和交互方式,使用户能够轻松选择海报、调整脸部位置、预览和保存换脸结果,无需复杂的技术知识。

实时和离线处理:相芯SDK可以在实时或离线环境下进行海报换脸处理。实时处理适用于实时相机应用,允许用户即时查看和分享换脸效果。离线处理适用于更复杂的图像合成需求,可以在后台进行更精细的处理和优化。

相芯SDK的海报换脸功能在市场上广泛应用于移动应用、相机应用、社交媒体平台和娱乐应用中。它为用户提供了一种有趣和创造性的方式来与图像互动,并创作个性化的换脸作品。

2.使用前必查

在项目中使用Avatar驱动特效特效之前,请确保

l 已在项目中引入Faceunity SDK,详情请参考Faceunity集成文档

l 已申请包含海报换脸权限的authpack证书文件

| SDK及证书获取方法:发送邮件至 [email protected] 进行咨询。

3.使用步骤

3.1. build.gradle配置

allprojects配置

allprojects {  
    repositories {  
        ...  
        maven { url 'https://maven.faceunity.com/repository/maven-public/' }   
        ...  
  }  
}

dependencies导入依赖

dependencies {
...
implementation 'com.faceunity:core:8.6.0' 
implementation 'com.faceunity:model:8.6.0' 
...
}

3.2初始化FUPosterKit

加载海报换脸bundle文件

FUPosterKit mFUPosterKit = FUPosterKit.getInstance(new FUBundleData(DemoConfig.BUNDLE_POSTER_CHANGE_FACE), mOnPosterRenderCallback);

3.3构造海报换脸数据

构造海报换脸数据

String[] files = DemoApplication.mApplication.getAssets().list("change_face");  
            for (int i = 0; i < files.length; i++) {  
                String fileDir = files[i];  
                if (fileDir.contains("template_")) {  
                    String[] temps = DemoApplication.mApplication.getAssets().list("change_face/" + fileDir);  
                    String path = "";  
                    String gridIconPath = "";  
                    String listIconPath = "";  
                    for (int j = 0; j < temps.length; j++) {  
                        String temp = temps[j];  
                        if (temp.contains("grid")) {  
                            gridIconPath = "file:///android_asset/change_face/" + fileDir + File.separator + temp;  
                        } else if (temp.contains("list")) {  
                            listIconPath = "file:///android_asset/change_face/" + fileDir + File.separator + temp;  
                        } else {  
                            path = "change_face/" + fileDir + File.separator + temp;  
                        }  
                    }  
                    double intensity = fileDir.contains("template_6.png") ? 0.2 : 0.5;  
                    posterBeans.add(new PosterBean(path, gridIconPath, listIconPath, intensity));  
                }  
  
            }

3.4绑定GLSurfaceView窗口大小

在GLSurfaceView绑定Renderer的onSurfaceChanged回调函数调用

mFUPosterKit.bindSurfaceSize(width, height);

渲染调用接口,其中各参数含义

photoBitmap:照片Bitmap

photoTexId:照片纹理id

templatePath:海报路径

intensity:嘴巴变形强度 范围[0.0-1.0]

mFUPosterKit.renderPoster(mPhotoBitmap, mPhotoTextureId, mTemplate, mIntensity);

3.5FUPosterKit回调

private OnPosterRenderCallback mOnPosterRenderCallback = new OnPosterRenderCallback() {  
  
        /** 
         * 
         * @param isSuccess 
         * @param texId 
         */  
        @Override  
        public void onMergeResult(boolean isSuccess, int texId) {  
            runOnUiThread(() -> {  
                showLoadingView(false);  
                if (!isSuccess) {  
                    ToastHelper.showNormalToast(PosterPreviewActivity.this, R.string.poster_change_face_error);  
  
                }  
                mergedTexId = texId;  
                mGlSurfaceView.requestRender();  
            });  
        }  
  
        /** 
         * 
         * @param trackFace 
         */  
        @Override  
        public void onTemplateLoaded(int trackFace) {  
            if (trackFace <= 0) {  
                runOnUiThread(() -> {  
                    showLoadingView(false);  
                    ToastHelper.showNormalToast(PosterPreviewActivity.this, R.string.poster_template_face_none);  
                });  
            }  
        }  
  
        /** 
         * 
         * @param posterFaceEnum 
         * @param array 
         */  
        @Override  
        public void onPhotoLoaded(PosterFaceEnum posterFaceEnum, ArrayList<float[]> array) {  
            if (PosterFaceEnum.POSTER_ERROR_NO_FACE == posterFaceEnum) {  
                if (mDataSource == 0)  
                    showPromptFragment(R.string.dialog_no_track_face_re_shot);  
                else  
                    showPromptFragment(R.string.dialog_no_track_face_re_upload);  
            } else if (PosterFaceEnum.POSTER_ERROR_ROTATE_FACE == posterFaceEnum) {  
                if (mDataSource == 0)  
                    showPromptFragment(R.string.dialog_face_rotation_not_valid_re_shot);  
                else  
                    showPromptFragment(R.string.dialog_face_rotation_not_valid_re_upload);  
            } else if (PosterFaceEnum.POSTER_ERROR_INCOMPLETE_FACE == posterFaceEnum) {

4. API参考列表

Module

类名

说明

core

FUPosterKit

绿幕抠像功能业务模型

core

OnPosterRenderCallback

海报换脸业务回调

5. 总结

总体而言,相芯SDK的海报换脸功能为用户提供了一种有趣和创造性的方式来与图像互动,并创作个性化的换脸作品。无论是在娱乐、社交还是品牌推广领域,该功能都具有广阔的市场应用前景。如在接入中遇到问题,可联系相芯科技进行咨询!

标签:海报,相芯,fileDir,face,换脸,SDK
From: https://blog.51cto.com/u_16072036/8587533

相关文章

  • html2canvas 生成一个 base64 的海报
    functiondownloadImage(base64Url){letimgUrl=base64Url;if(window.navigator.msSaveOrOpenBlob){//兼容IE浏览器的写法 letimageStr=atob(imgUrl.split(",")[1]); letn=imageStr.length; letu8arr=newUint8Array(n); while......
  • 免费AI换脸app72写真使用感受
    使用72写真app后,我对它的使用体验有一些深刻的感受。选择喜欢的封面图,点击一键生成一款写真,等待15秒会生成1张用户的写真,点击写真可以下载到手机相册,写真是根据用户上传的头像生成,因此上传更清晰的正面的无遮挡的大头照会更像苹果应用商店(AppStore)预览链接:https://apps.ap......
  • 焕颜AI DeepfaceKit 换脸变声教程
    下载安装1.软件下载地址https://exluyyho90p.feishu.cn/docx/TRBWdOfkIoFMeYxZiDZc7k62nud2.打开软件3.进入软件首页使用须知:软件集成AI实时换脸、克隆声音、背景替换、实时美颜、一键遮罩、视频图片等功能传统的Swapface、Deepface....这类软件对电脑配置要求很高,不然会非常的卡顿......
  • Docker部署fastposter | 一款快速开发海报的工具
    一、介绍fastposter海报生成器是一款快速开发海报的工具。只需上传一张背景图,在对应的位置放上组件(文字、图片、二维码、头像)即可生成海报。点击代码直接生成各种语言SDK的调用代码,方便快速开发。二、搭建fastposter绿联DX4600为例,首先我们打开Docker管理器,进入镜像管理,然......
  • uniapp 之绘制海报 并适应机型
    之前绘制的海报出现的问题:①海报有一角圆角没体现出来②海报内容随机型,变动到其他位置(并不是想要的地方)针对于这个问题进行修改注意:海报设置的宽度与你canvas给的标签的宽高是保持一致,下面图片为完成的海报图    一、设置海报的初......
  • ai技术是怎么换脸的,实现原理是什么,有那些软件
    人工智能(AI)在近年来的迅猛发展中,带来了许多令人惊叹的技术创新,其中之一就是人工智能换脸技术。这项技术通过深度学习和图像处理的手段,使得用户可以将自己的面孔替换成其他人物,引发了广泛的讨论和应用。本文将深入探讨人工智能换脸技术的实现原理、相关软件以及伦理考量。1.人工......
  • ai换脸可以突破人脸识别吗,有没有技术可以攻破
    人工智能(AI)换脸技术,通常被称为“Deepfakes”,可以生成几乎无法与真实面部区分开的面部图像或视频。这种技术的确有可能被用来欺骗人脸识别系统,至少是那些不具备足够先进检测机制的系统。以下是一些可能被用来攻破人脸识别系统的技术和方法:1.制作高质量的Deepfakes如果AI生成的换......
  • ai换脸可以突破人脸识别吗?,详细的介绍!
    AI换脸技术,通常被称为深度伪造(deepfake)技术,是使用人工智能算法,特别是深度学习的方法,如卷积神经网络(CNN)或生成对抗网络(GAN),来替换视频或图像中人物的脸部的技术。这种技术可以创建非常逼真的视频或图片,以至于肉眼很难辨别真伪。在讨论AI换脸能否突破人脸识别之前,我们首先需要理解人......
  • 利用剪贴蒙版制作海报
     视频网址:https://mooc1-2.chaoxing.com/mooc-ans/mycourse/teacherstudy?chapterId=687030348&courseId=220576162&clazzid=85345057 ......
  • 利用滤镜制作乡村个人防护海报
     视频网址:https://mooc1-2.chaoxing.com/mooc-ans/mycourse/teacherstudy?chapterId=687030348&courseId=220576162&clazzid=85345057 ......