实现图像处理
前提条件
在实现基本的 AI 美颜功能之前,请确保:
- 登录 ZEGO 控制台 创建项目,获取接入 ZegoEffects SDK 服务所需的 AppID 和 AppSign,详情请参考 控制台 - 项目信息。
- 已在项目中集成 AI 美颜 SDK,详情请参考 快速开始 - 集成 SDK。
- 已在项目中集成 ZegoExpressSDK,详情请参考 快速开始 - 集成 SDK。
使用步骤
1. 导入 AI 资源或模型
使用 AI 美颜 的 AI 相关功能前,必须调用 setResources 接口导入 AI 资源或模型,详情请参考 快速开始 - 导入资源和模型。
ZegoEffectsPlugin.instance.setResources();
2. 创建 Effects 对象
注意
调用此方法时,前面必须添加 await 关键字。
// 请确保已调用 [setResources] 方法加载资源、模型。
//appID 和 appSign 为前提条件获取到的参数 必须添加await关键字
await ZegoEffectsPlugin.instance.create(appID,appSign);
3. 初始化并开启 AI 美颜功能
注意
请确保已经初始化 Express SDK,详情可参考 实现视频通话文档。
1
开启自定义视频前处理
调用 Express 的 enableCustomVideoProcessing 方法,开启自定义视频前处理。
// 启用 ExpressEngine 的自定义处理
ZegoCustomVideoProcessConfig config = ZegoCustomVideoProcessConfig(ZegoVideoBufferType.GLTexture2D);
if (Platform.isIOS) {
config.bufferType = ZegoVideoBufferType.CVPixelBuffer;
} else if (Platform.isAndroid) {
config.bufferType = ZegoVideoBufferType.GLTexture2D;
}
// 启用自定义前处理
ZegoExpressEngine.instance.enableCustomVideoProcessing(true, config);
2
启用图像处理功能
调用 AI 美颜的 enableImageProcessing 方法,启用图像处理功能。
// 使用 AI 美颜的自定义处理
ZegoEffectsPlugin.instance.enableImageProcessing(true);
3
开启预览
调用 Express 的 createCanvasView 方法创建用语预览的视图,并调用 Express 的 startPreview 开启预览。
// 必须在 ZegoExpressSDK 创建引擎成功后调用
ZegoExpressEngine.instance.createCanvasView((viewID) {
_previewId = viewID;
print('createCanvasView viewId: $viewID');
startPreview(_previewId);
}).then((widget) {
print('createCanvasView widget: $widget');
setState(() {
_previewViewWidget = widget!;
});
}).catchError((err){
// 输出相关错误码
print('createCanvasView Error: $err' );
});
4
开启美颜功能
开启美颜功能。
调用 enableSmooth/enableFaceLifting 等接口开启美颜功能。
// 启用并配置磨皮效果以获得更好的美化效果
ZegoEffectsPlugin.instance.enableSmooth(true);
ZegoEffectsSmoothParam param = ZegoEffectsSmoothParam();
param.intensity = 100;
ZegoEffectsPlugin.instance.setSmoothParam(param);
// 启用瘦脸效果以创建更小的脸部外观
ZegoEffectsPlugin.instance.enableFaceLifting(true);
ZegoEffectsFaceLiftingParam param = ZegoEffectsFaceLiftingParam();
param.intensity = 100;
ZegoEffectsPlugin.instance.setFaceLiftingParam(param);