当前位置:网站首页>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 最新技术资讯~
边栏推荐
- The CAN communication standard frame and extended frame is introduced
- pandas连接oracle数据库并拉取表中数据到dataframe中、筛选当前时间(sysdate)到一个小时之前的所有数据(筛选一个小时的范围数据)
- Audio and Video Technology Development Weekly | 256
- mysql进阶(二十二)MySQL错误之Incorrect string value中文字符输入错误问题分析
- 故障007:dexp导数莫名中断
- 2022 Go生态圈 rpc 框架 Benchmark
- 2022 Go ecosystem rpc framework Benchmark
- 重庆市大力实施智能建造,推动建筑业数字化转型,助力“建造强市”
- STM32 CAN过滤器配置详解
- Detailed explanation of table join
猜你喜欢
随机推荐
收藏|机械工程师面试常问问题
Aeraki Mesh became CNCF sandbox project
pandas connects to the oracle database and pulls the data in the table into the dataframe, filters all the data from the current time (sysdate) to one hour ago (filters the range data of one hour)
Beyond Compare 4 试用期到期
重磅消息 | Authing 实现与西门子低代码平台的集成
MySQL调优
Transfer learning to freeze the network:
Dapr 与 NestJs ,实战编写一个 Pub & Sub 装饰器
Feign 从注册到调用原理分析
表达式引擎在转转平台的实践
如何获取微信视频号的地址(微信公众号的链接地址)
SQL函数 SQUARE
Qt获取文件夹下所有文件
How to Integrate Your Service Registry with Istio?
Aeraki Mesh 正式成为 CNCF 沙箱项目
How to get the address of WeChat video account (link address of WeChat public account)
表连接详解
pandas连接oracle数据库并拉取表中数据到dataframe中、筛选当前时间(sysdate)到一个小时之前的所有数据(筛选一个小时的范围数据)
This article will take you to thoroughly clarify the working mechanism of certificates in Isito
实现集中式身份认证管理的案例









