当前位置:网站首页>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
- ECCV22|只能11%的参数就能优于Swin,微软提出快速预训练蒸馏方法TinyViT
- R语言ggplot2可视化:使用ggpubr包的ggdensity函数可视化密度图、使用stat_central_tendency函数在密度中添加均值竖线并自定义线条类型
- 库函数的模拟实现(strlen)(strcpy)(strcat)(strcmp)(strstr)(memcpy)(memmove)(C语言)(VS)
- 【云享新鲜】社区周刊·Vol.73- DTSE Tech Talk:1小时深度解读SaaS应用系统设计
- Beyond Compare 4 试用期到期
- Grafana9.0发布,Prometheus和Loki查询生成器、全新导航、热图面板等新功能!
- [Unity3D Plugin] AVPro Video Plugin Share "Video Player Plugin"
- JS数据类型转换完全攻略
- SQL函数 STR
猜你喜欢
轮询和长轮询的区别
STM32 CAN filter configuration details
库函数的模拟实现(strlen)(strcpy)(strcat)(strcmp)(strstr)(memcpy)(memmove)(C语言)(VS)
Apex installation error
程序员如何优雅地解决线上问题?
博弈论(Depu)与孙子兵法(42/100)
The CAN communication standard frame and extended frame is introduced
【讲座分享】“营收“看金融
判断JS数据类型的四种方法
How do programmers solve online problems gracefully?
随机推荐
浏览器存储
[5 days countdown] to explore the secret behind the great quality promotion, gift waiting for you to take of $one thousand
A new generation of ultra-safe cellular batteries, Sihao Airun goes on sale starting at 139,900 yuan
如何将第三方服务中心注册集成到 Istio ?
[Open class preview]: Research and application of super-resolution technology in the field of video quality enhancement
How to successfully pass the CKA exam?
[Cloud Enjoying Freshness] Community Weekly Vol.73- DTSE Tech Talk: 1 hour in-depth interpretation of SaaS application system design
bpmn-process-designer基础上进行自定义样式(工具、元素、菜单)
Fault 007: The dexp derivative is inexplicably interrupted
稀疏表示--学习笔记
STM32 CAN filter configuration details
AI目标分割能力,无需绿幕即可实现快速视频抠图
Meshlab&Open3D SOR滤波
Detailed explanation of table join
大众碰到点评的一个字体反爬,落地技术也是绝了
英特尔全方位打造算力基础,助推“算”赋百业
Favorites|Mechanical Engineer Interview Frequently Asked Questions
R语言ggplot2可视化:使用ggpubr包的ggdensity函数可视化密度图、使用stat_central_tendency函数在密度中添加均值竖线并自定义线条类型
库函数的模拟实现(strlen)(strcpy)(strcat)(strcmp)(strstr)(memcpy)(memmove)(C语言)(VS)
易周金融分析 | 银行ATM机智能化改造提速;互联网贷款新规带来挑战