当前位置:网站首页>AI目标分割能力,无需绿幕即可实现快速视频抠图
AI目标分割能力,无需绿幕即可实现快速视频抠图
2022-08-01 12:15:00 【HMS Core】
绿幕抠图是影视制作过程中常见的技术手段,常用于视频中抠除并替换背景,通过后期加工实现视频剪辑制作的更多可能性。然而,绿幕抠图技术制作成本费时费力,无法应用于日常生活。
华为视频编辑服务近期上线目标分割能力,可通过AI智能抠图精细化分割视频中的目标物体,并且不局限于特定的物体类别,在主体明确、背景相对简单的视频中进行主体和背景的分割,可以取得不错的处理效果。
应用场景
目标分割能力多应用于视频直播、在线教育、论坛会议等场景。比如,在卖货直播的场景中,可以将直播背景替换成商品详情页的轮播画面,便于用户及时了解商品;在线上论坛或者视频会议中,将背景替换成PPT内容或者办公场景,营造学习办公的严肃氛围。同样,目标分割能力也可满足用户日常趣味剪辑,用户可以通过目标分割能力剪辑人像视频,然后将背景切换各国名景,足不出户便能实现“周游世界”。
除了更换视频背景,目标分割能力还可应用于影视播放,通过目标抠图,避免弹幕遮挡剧情主体,优化用户观看体验。结合其他技术能力,还可以将分割后的目标物体进行复制和删除,甚至调整目标物体的动作时间,打造更具创意的视频作品。
实现原理
那么,目标分割能力是怎么实现的呢?
首先,用户需要选择目标物体,然后再进行AI目标分割。通过给定视频第一帧图像需要分割目标物体的对应掩码,AI模型会自动在后续每一帧的视频帧中匹配这个物体并尝试分割出来。并且,模型将会保存中间帧分割效果好的结果掩码与第一帧的掩码信息相结合,在后续视频帧中进行匹配,可以精准勾勒目标物体的边缘细节,进一步提升目标分割的准确度。
DEMO演示
集成方式
1. 开发准备
详细准备步骤可参考华为开发者联盟官网
2. 编辑工程集成
2.1 设置应用的鉴权信息
可以通过api_key或者Access Token来设置应用鉴权信息。
通过setAccessToken方法设置Access Token,在应用启动时初始化设置一次即可,无需多次设置。
MediaApplication.getInstance().setAccessToken("your access token");
通过setApiKey方法设置api_key,在应用启动时初始化设置一次即可,无需多次设置。
MediaApplication.getInstance().setApiKey("your ApiKey");
2.2设置唯一标识ID,即License ID。
License ID是进行管控的有效凭证,您要保证设置License ID的唯一性。
MediaApplication.getInstance().setLicenseId("License ID");
2.2.1初始化Editor运行环境
创建编辑工程,需要首先创建Editor对象并初始化其运行环境。当离开编辑工程时,应释放Editor实例。
(1) 创建Editor对象
HuaweiVideoEditor editor = HuaweiVideoEditor.create(getApplicationContext());
(2) 指定预览窗口的布局位置
预览窗口负责视频图像画面的渲染,由视频编辑原子能力SDK内部创建SurfaceView来实现。在创建窗口之前,需要在您的App中指定预览窗口的布局位置。
<LinearLayout android:id="@+id/video_content_layout" android:layout_width="0dp" android:layout_height="0dp" android:background="@color/video_edit_main_bg_color" android:gravity="center" android:orientation="vertical" />// 指定预览窗口 LinearLayout mSdkPreviewContainer = view.findViewById(R.id.video_content_layout);// 设置预览窗口承载的布局 editor.setDisplay(mSdkPreviewContainer);
(3) 初始化运行环境,如果License鉴权失败,会抛出LicenseException。
当Editor对象创建之后,此时还没有占用实际的系统资源,需要手动选择其环境初始化的时机,此时视频编辑原子能力SDK内部会创建必须的线程和定时器等。
try { editor.initEnvironment(); } catch (LicenseException error) { SmartLog.e(TAG, "initEnvironment failed: " + error.getErrorMsg()); finish(); return; }
3. “目标分割”能力集成
// 初始化目标分割AI引擎videoAsset.initSegmentationEngine(new HVEAIInitialCallback() { @Override public void onProgress(int progress) { // 初始化进度 } @Override public void onSuccess() { // 初始化成功 } @Override public void onError(int errorCode, String errorMessage) { // 初始化失败 }});// 初始化成功后,选择需要分割的目标进行分割,返回选择分割目标的的处理结果// bitmap包含需要分割的目标的视频帧图片;timeStamp为视频帧图片在时间线上的时间戳;points为基于视频帧图片的坐标点集合,左上角为原点坐标,坐标点应位于需要分割的目标内,且个数建议大于等于2,需根据坐标点轨迹来确定选择的目标int result = videoAsset.selectSegmentationObject(bitmap, timeStamp, points);// 目标分割的处理结果成功后,添加目标分割AI特效videoAsset.addSegmentationEffect(new HVEAIProcessCallback() { @Override public void onProgress(int progress) { // 目标分割AI特效处理进度 } @Override public void onSuccess() { // 目标分割AI特效处理成功 } @Override public void onError(int errorCode, String errorMessage) { // 目标分割AI特效处理失败 }});// 中断目标分割AI特效处理videoAsset.interruptSegmentation();// 移除目标分割AI特效videoAsset.removeSegmentationEffect();// 释放目标分割AI引擎videoAsset.releaseSegmentationEngine();
了解更多详情>>
访问华为开发者联盟官网
获取开发指导文档
华为移动服务开源仓库地址:GitHub、Gitee
关注我们,第一时间了解 HMS Core 最新技术资讯~
边栏推荐
- R语言ggplot2可视化:使用ggpubr包的geom_exec函数执行geom_*函数(没有任何参数需要放置在aes中)
- 找出相同属性值的对象 累加数量 汇总
- bpmn-process-designer基础上进行自定义样式(工具、元素、菜单)
- Istio Meetup China:全栈服务网格 - Aeraki 助你在 Istio 服务网格中管理任何七层流量
- 这项工作事关中小学生生命安全!五部门作出联合部署
- 英特尔全方位打造算力基础,助推“算”赋百业
- 语音聊天app源码——语音聊天派对
- Dameng replaces the officially authorized dm.key
- MVVM响应式
- JS 中的 undefined 和 null 的区别
猜你喜欢
随机推荐
Alibaba Cloud Official Redis Development Specification
STM32 CAN过滤器配置详解
Complete Raiders of JS Data Type Conversion
The four methods of judging JS data type
How to successfully pass the CKA exam?
ECCV22|只能11%的参数就能优于Swin,微软提出快速预训练蒸馏方法TinyViT
深入解析volatile关键字
音视频技术开发周刊 | 256
这项工作事关中小学生生命安全!五部门作出联合部署
数字化转型实践:世界级2B数字化营销的方法框架
Apex installation error
win10系统重装,无法登录进行同步的情况下chrome数据恢复
MMF的初步介绍:一个规范化的视觉-语言多模态任务框架
【面试高频题】难度 1.5/5,二分经典运用题
通配符SSL证书不支持多域名吗?
一文带你彻底厘清 Isito 中的证书工作机制
新书上市 |《谁在掷骰子?》在“不确定性时代”中确定前行
Find objects with the same property value Cumulative number Summarize
如何将第三方服务中心注册集成到 Istio ?
ddl and dml in sql (the difference between database table and view)