乐趣区

关于hms-core:手势切换背景让直播带货更加身临其境

前言

  因为往年疫情扭转了各类人群的购物习惯,电商市场份额继续攀升,而直播电商作为一种簇新的交易方式正在重塑流量入口格局,越来越多消费者通过直播带货的形式进入商品页。因而主播为了获取更好的直播成果,往往要花费更多工夫筹备商品亮点介绍、优惠措施、展现环节,每一个环节都对最终交易后果产生间接影响。以往商家在固定布景的直播间带货,很容易让观众产生审美疲劳,当观众看不到本人对口的商品时往往因为不感兴趣而来到,除非超级段子手,否则主播无奈在所有商品环节让每个观众放弃兴致盎然,导致的后果可能是直播观看人数随着商品介绍不增反减。
  当初借助华为机器学习服务推出的图像宰割技术就能够实现依据不同商品品类、需要数字化实时替换各种动态和动静布景,让直播随着切换的各种格调背景变得生动有趣。该技术采纳语义宰割的形式宰割出主播人像,比方介绍家居类商品时能够立刻切换成家居格调的房间,介绍户外运动配备时也能够实时切换到户外,观众通过这种翻新体验也更能找到身临其境的代入感。

性能介绍

  Demo 基于华为机器学习服务推出的图像宰割和手部关键点辨认两大技术,开发通过手势切换背景性能,为了防止误操作,本次 Demo 设置只有大幅挥手时才切换背景,加载自定义的背景后反对向前切换(向右拨动)和向后切换(向左拨动),操作形式和手机统一,反对动静视频背景,同时如果想采纳定制化的手势进行背景切换或实现其余手势特效,能够集成华为 ML Kit 手部关键点辨认进行定制开发。


  是不是很具备想象力的交互体验?让咱们一起看看是如何实现的。

开发步骤

  1. 增加 HUAWEI agcp 插件以及 Maven 代码库。
buildscript {
    repositories {google()
        jcenter()
        maven {url 'https://developer.huawei.com/repo/'}
    }
    dependencies {
        ...
        classpath 'com.huawei.agconnect:agcp:1.4.1.300'
    }
}
  
allprojects {
    repositories {google()
        jcenter()
        maven {url 'https://developer.huawei.com/repo/'}
    }
}
  1. Full SDK 形式集成。
dependencies{
     // 引入图像宰割根底 SDK
    implementation 'com.huawei.hms:ml-computer-vision-segmentation:2.0.4.300'
    // 引入多类别宰割模型包
    implementation 'com.huawei.hms:ml-computer-vision-image-segmentation-multiclass-model:2.0.4.300'
    // 引入人像宰割模型包
    implementation 'com.huawei.hms:ml-computer-vision-image-segmentation-body-model:2.0.4.300'
    // 引入手势辨认根底 SDK
    implementation 'com.huawei.hms:ml-computer-vision-handkeypoint:2.0.4.300'
    // 引入手部关键点检测模型包
    implementation 'com.huawei.hms:ml-computer-vision-handkeypoint-model:2.0.4.300'
}
  1. 在文件头增加配置。

  在 apply plugin: ‘com.android.application’ 后增加 apply plugin: ‘com.huawei.agconnect’

  1. 自动更新机器学习模型

  在 AndroidManifest.xml 文件中增加

<manifest
    ...
    <meta-data
        android:name="com.huawei.hms.ml.DEPENDENCY"
        android:value="imgseg,handkeypoint" />
    ...
</manifest>
  1. 创立图像宰割检测器。
MLImageSegmentationAnalyzer imageSegmentationAnalyzer = MLAnalyzerFactory.getInstance().getImageSegmentationAnalyzer();// 图像宰割分析器
MLHandKeypointAnalyzer handKeypointAnalyzer = MLHandKeypointAnalyzerFactory.getInstance().getHandKeypointAnalyzer();// 手势辨认分析器
  
MLCompositeAnalyzer analyzer = new MLCompositeAnalyzer.Creator()
                                    .add(imageSegmentationAnalyzer)
                                   .add(handKeypointAnalyzer)
                                   .create();
  1. 创立辨认后果解决类。
public class ImageSegmentAnalyzerTransactor implements MLAnalyzer.MLTransactor<MLImageSegmentation> {
    @Override
    public void transactResult(MLAnalyzer.Result<MLImageSegmentation> results) {SparseArray<MLImageSegmentation> items = results.getAnalyseList();
        // 开发者依据须要解决辨认后果,须要留神,这里只对检测后果进行解决。// 不可调用 ML Kit 提供的其余检测相干接口。}
    @Override
    public void destroy() {// 检测完结回调办法,用于开释资源等。}
}
  
public class HandKeypointTransactor implements MLAnalyzer.MLTransactor<List<MLHandKeypoints>> {
    @Override
    public void transactResult(MLAnalyzer.Result<List<MLHandKeypoints>> results) {SparseArray<List<MLHandKeypoints>> analyseList = results.getAnalyseList();
        // 开发者依据须要解决辨认后果,须要留神,这里只对检测后果进行解决。// 不可调用 ML Kit 提供的其余检测相干接口。}
    @Override
    public void destroy() {// 检测完结回调办法,用于开释资源等。}
}
  1. 设置辨认后果处理器,实现分析器与后果处理器的绑定.
imageSegmentationAnalyzer.setTransactor(new ImageSegmentAnalyzerTransactor());
handKeypointAnalyzer.setTransactor(new HandKeypointTransactor());
  1. 创立 LensEngine
Context context = this.getApplicationContext();
LensEngine lensEngine = new LensEngine.Creator(context,analyzer)
    // 设置摄像头前后置模式,LensEngine.BACK_LENS 为后置,LensEngine.FRONT_LENS 为前置。.setLensType(LensEngine.FRONT_LENS)
    .applyDisplayDimension(1280, 720)
    .applyFps(20.0f)
    .enableAutomaticFocus(true)
    .create();
  1. 启动相机,读取视频流,进行辨认。
// 请自行实现 SurfaceView 控件的其余逻辑。SurfaceView mSurfaceView = new SurfaceView(this);
try {lensEngine.run(mSurfaceView.getHolder());
} catch (IOException e) {// 异样解决逻辑。}
  1. 检测实现,进行分析器,开释检测资源。
if (analyzer != null) {
    try {analyzer.stop();
    } catch (IOException e) {// 异样解决。}
}
if (lensEngine != null) {lensEngine.release();
}

# 总结
  综上,通过引入包、建设检测、剖析与后果解决等几个简略的步骤就能够疾速实现这个小小的黑科技。另外通过图像宰割技术,咱们还能够做很多货色,比方视频网站中的蒙版弹幕,联合一些前端渲染技术轻松防止弹幕遮蔽人体局部,或者利用现有素材制作各种尺寸的精美写真照片,语义宰割的一大益处就是能够精准地管制你想要宰割进去的物体,除了人像还能够对美食、宠物、修建、风光甚至花花草草等进行宰割,再也不必死磕电脑上的业余修图软件了。

Github Demo

更具体的开发指南参考华为开发者联盟官网:https://developer.huawei.com/consumer/cn/hms/huawei-mlkit


原文链接:https://developer.huawei.com/consumer/cn/forum/topic/0204395267288570031?fid=18
原作者:timer

退出移动版