当前位置: 首页 > 后端技术 > Java

AI目标分割能力,无需绿屏即可实现视频快速抠图

时间:2023-04-01 17:38:03 Java

绿屏抠图是影视制作过程中常用的技术手段。常用于视频中背景的裁剪和替换,通过后期处理实现视频片段制作的更多可能性。然而,绿幕抠图技术的制作成本费时费力,无法在日常生活中应用。华为视频剪辑服务近期上线了目标分割能力,可以通过AI智能抠图对视频中的目标对象进行精细分割,不局限于特定的对象类别。它可以在主体清晰、背景相对简单的视频中进行主体和背景分割,可以获得很好的处理效果。应用场景目标分割能力多用于视频直播、在线教育、论坛会议等场景。例如,在直播卖货场景中,可以将直播背景换成商品详情页的轮播屏,方便用户及时了解商品;在网络论坛或视频会议中,可以将背景替换为PPT内容或办公场景,营造学习氛围和严肃的办公氛围。同样,目标分割能力也能满足用户日常兴趣编辑。用户可以通过目标分割能力编辑人像视频,再将背景切换为各国名景,足不出户“走遍世界”。除了改变视频背景,目标分割能力也可以应用到视频播放中。通过目标抠图,可以避免弹幕遮挡剧情主体,优化用户观看体验。结合其他技术能力,分割后的目标对象还可以进行复制、删除,甚至可以调整目标对象的动作时间,创作出更具创意的视频作品。实现原理那么,目标分割能力是如何实现的呢?首先,用户需要选择目标物体,然后进行AI目标分割。通过给出视频第一帧中需要分割的目标物体对应的mask,AI模型会自动匹配后续每一帧视频中的物体并尝试分割。另外,模型会将分割效果好的结果mask保存在中帧,并结合第一帧的mask信息在后续的视频帧中进行匹配,可以准确勾勒出目标物体的边缘细节,进一步提高目标分割的准确性。DEMO演示集成方法1.开发准备详细准备步骤请参考华为开发者联盟官网2.编辑项目集成2.1设置应用认证信息您可以通过api_key或AccessToken设置应用认证信息。通过setAccessToken方法设置AccessToken,在应用启动时初始化一次,无需多次设置。MediaApplication.getInstance().setAccessToken("你的访问令牌");通过setApiKey方法设置api_key,应用启动时初始化一次,无需多次设置。MediaApplication.getInstance().setApiKey("你的ApiKey");2.2设置唯一ID,即LicenseID。LicenseID是用于管理和控制的有效证书。您必须确保许可证ID的唯一性。MediaApplication.getInstance().setLicenseId("许可证ID");2.2.1初始化Editor运行环境创建一个编辑工程,首先需要创建一个Editor对象,并初始化它的运行环境。离开编辑项目时,应该释放Editor实例。(1)创建Editor对象HuaweiVideoEditoreditor=HuaweiVideoEditor.create(getApplicationContext());(2)指定预览窗口的布局位置。预览窗口负责视频画面的渲染,由VideoEditingAtomicAbilitySDK内部创建的SurfaceView实现。在创建窗口之前,您需要指定预览窗口在您的应用中的布局位置。//指定预览窗口LinearLayoutmSdkPreviewContainer=view.findViewById(R.id.video_content_layout);//设置预览窗口承载的布局editor.setDisplay(mSdkPreviewContainer);(3)初始化运行环境,如果license认证失败,将抛出LicenseException。Editor对象创建后,此时并不占用实际的系统资源,需要手动选择其环境初始化的时机。此时视频编辑原子能力SDK会创建必要的线程和定时器。尝试{editor.initEnvironment();}catch(LicenseExceptionerror){SmartLog.e(TAG,"initEnvironmentfailed:"+error.getErrorMsg());结束();返回;}3。“目标分割”能力整合//初始化目标分割AI引擎videoAsset.initSegmentationEngine(newHVEAIInitialCallback(){@OverridepublicvoidonProgress(intprogress){//初始化进度}@OverridepublicvoidonSuccess(){//初始化成功}@OverridepublicvoidonError(interrorCode,StringerrorMessage){//初始化失败}});//初始化成功后,选择待切分目标进行切分,返回所选切分目标的处理结果//bitmap包含待分割目标的视频帧图片;timeStamp是视频帧图片在时间线上的时间戳;points是一组基于视频帧图片的坐标点,左上角为原点坐标,坐标点应位于待划分的目标内,建议数量大于等于2。点轨迹确定选择的目标intresult=videoAsset.selectSegmentationObject(bitmap,timeStamp,points);//目标分割处理结果成功后,添加目标分割AI特效videoAsset.addSegmentationEffect(newHVEAIProcessCallback(){@OverridepublicvoidonProgress(intprogress){//目标分割AI特效处理进度}@OverridepublicvoidonSuccess(){//目标分割AI特效处理成功}@OverridepublicvoidonError(interrorCode,StringerrorMessage){//目标分割AI特效处理failed}});//中断目标分割AI特效处理videoAsset.interruptSegmentation();//移除目标分割AI特效videoAsset.removeSegmentationEffect();//释放目标分割AI引擎videoAsset.releaseSegmentationEngine();更多详情>>访问华为从开发者联盟官网获取开发指导文档。华为移动服务开源仓库地址:GitHub和Gitee。关注我们,了解HMSCore的最新技术资讯~