海报换脸

  • 海报换脸是将对模板图和输入图中的人脸进行人脸融合操作,并返回融合后的模板图片的一种技术。

  • 模板图片中如果有阴阳脸的情况会影响最终效果,建议选择肤色均匀的模板图片。如果模板肤色不均匀可以使用ps进行处理。

  • 现在对于夸张表情和大角度的模板和输入图支持不太好,建议使用正常表情的正脸图。

Module

类名

说明

core

FUPosterKit

绿幕抠像功能业务模型

core

OnPosterRenderCallback

海报换脸业务回调

1.1 FUPosterKit (change_face.bundle)

1.1.1 初始化FUPosterKit

单例模式

接口说明

fun getInstance(handleData: FUBundleData, callback: OnPosterRenderCallback): FUPosterKit

参数说明

handleData:通过海报换脸Bundle文件构造的文件数据模型 callback:回调监听

代码示例

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

1.1.2 绑定GLSurfaceView窗口大小

接口说明

fun bindSurfaceSize(width: Int, height: Int)

参数说明

width:窗口宽 height:窗口高

代码示例

 mFUPosterKit.bindSurfaceSize(width, height);

备注

GLSurfaceView绑定RendereronSurfaceChanged回调函数调用

1.1.3 渲染调用

接口说明

fun renderPoster(photoBitmap: Bitmap, photoTexId: Int, templatePath: String, intensity: Double)

参数说明

photoBitmap:照片Bitmap photoTexId:照片纹理id templatePath:海报路径 intensity:嘴巴变形强度 范围[0.0-1.0]

1.1.4 渲染调用

接口说明

fun renderPoster(photoPath: String, templatePath: String, intensity: Double)

参数说明

photoPath:照片路径 templatePath:海报路径 intensity:嘴巴变形强度 范围[0.0-1.0]

1.1.5 照片多人脸场景绑定照片脸位

接口说明

fun bindPhotoData(index: Int)

参数说明

indexOnPosterRenderCallback 回调返回下标

1.1.6 更换海报蒙版

接口说明

fun updateTemplate(templatePath: String, intensity: Double)

参数说明

templatePath:海报路径 intensity:嘴巴变形强度 范围[0.0-1.0]

1.1.7 OnPosterRenderCallback过程回调接口

接口说明

interface OnPosterRenderCallback {
 
    /**
     * 图片加载完成回调
     * @param trackFace Int -1:人脸偏转角度过大 0未检测到人脸 >1 多人脸
     * @param array ArrayList<FloatArray>? 多人脸点位信息
     */
    fun onPhotoLoaded(trackFace: Int, array: ArrayList<FloatArray>? = null)
 
    /**
     * 蒙版加载完成
     *
     * @param trackFace Int -1:未检测到人脸
     */
    fun onTemplateLoaded(trackFace: Int)
 
 
    /**
     * 照片合成结果状态返回
     * @param isSuccess Boolean
     * @param texId 合成对应的纹理id
     */
    fun onMergeResult(isSuccess: Boolean, texId: Int)
 
}

 


< 上一页: 音乐滤镜
下一页: 更多道具 >