本篇内容主要讲解“如何使用超简单集成HMS Core ML Kit场景识别,构建相册管理新模式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用超简单集成HMS Core ML Kit场景识别,构建相册管理新模式”吧!
华为场景识别服务支持对图片的场景内容进行分类并添加标注信息,如美食、花朵、绿植、猫、狗、厨房、山峰、洗衣机等102种场景,并基于识别到的信息,构建更智能的相册应用体验。
场景识别具有以下功能特性:
多类场景识别 支持102种场景的识别,并持续增加。
识别准确率高 可识别多种物品、场景,识别准确率高。
识别响应速度快 毫秒级响应速度,并不断优化性能表现。
集成简单高效 提供API接口和SDK包,方便客户集成,操作简单,减少开发成本。
场景识别除了应用于建立智能相册、照片检索和分类外,还可以识别拍摄场景自动选择相应的场景滤镜和相机参数,帮助用户拍摄出更好看的照片。
在开发应用前,需要在AppGallery Connect中配置相关信息。 具体操作步骤,请参考下方链接: https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides-V5/config-agc-0000001050990353-V5
(1)打开Android Studio项目级“build.gradle”文件。
(2)添加HUAWEI agcp插件以及Maven代码库。
在“allprojects > repositories”中配置HMS Core SDK的Maven仓地址。
在“buildscript > repositories”中配置HMS Core SDK的Maven仓地址。
如果App中添加了“agconnect-services.json”文件则需要在“buildscript > dependencies”中增加agcp配置。
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:使用默认的参数配置。 MLSceneDetectionAnalyzer analyzer = MLSceneDetectionAnalyzerFactory.getInstance().getSceneDetectionAnalyzer(); // 方式2:按自定义配置创建场景识别分析器实例。 MLSceneDetectionAnalyzerSetting setting = new MLSceneDetectionAnalyzerSetting.Factory() // 设置场景识别可信度阈值。 .setConfidence(confidence) .create(); MLSceneDetectionAnalyzer analyzer = MLSceneDetectionAnalyzerFactory.getInstance().getSceneDetectionAnalyzer(setting);
MLFrame frame = new MLFrame.Creator().setBitmap(bitmap).create();
// 方式1:同步识别。 SparseArray<MLSceneDetection> results = analyzer.analyseFrame(frame); // 方式2:异步识别。 Task<List<MLSceneDetection>> task = analyzer.asyncAnalyseFrame(frame); task.addOnSuccessListener(new OnSuccessListener<List<MLSceneDetection>>() { public void onSuccess(List<MLSceneDetection> result) { // 场景识别成功的处理逻辑。 }}) .addOnFailureListener(new OnFailureListener() { public void onFailure(Exception e) { // 场景识别识别失败的处理逻辑。 // failure. if (e instanceof MLException) { MLException mlException = (MLException)e; // 获取错误码,开发者可以对错误码进行处理,根据错误码进行差异化的页面提示。 int errorCode = mlException.getErrCode(); // 获取报错信息,开发者可以结合错误码,快速定位问题。 String errorMessage = mlException.getMessage(); } else { // 其他异常。 } } });
if (analyzer != null) { analyzer.stop(); }
开发者可以自行处理视频流,将视频流转化为MLFrame对象,再按静态图像检测的方法进行场景识别。
如果开发者调用的是同步检测接口,也可以使用SDK内置的LensEngine类实现视频流场景识别。示例代码如下:
MLSceneDetectionAnalyzer analyzer = MLSceneDetectionAnalyzerFactory.getInstance().getSceneDetectionAnalyzer();
public class SceneDetectionAnalyzerTransactor implements MLAnalyzer.MLTransactor<MLSceneDetection> { @Override public void transactResult(MLAnalyzer.Result<MLSceneDetection> results) { SparseArray<MLSceneDetection> items = results.getAnalyseList(); // 开发者根据需要处理识别结果,需要注意,这里只对检测结果进行处理。 // 不可调用ML Kit提供的其他检测相关接口。 } @Override public void destroy() { // 检测结束回调方法,用于释放资源等。 } }
analyzer.setTransactor(new SceneDetectionAnalyzerTransactor()); // 创建LensEngine,该类由ML Kit SDK提供,用于捕捉相机动态视频流并传入分析器。 Context context = this.getApplicationContext(); LensEngine lensEngine = new LensEngine.Creator(context, this.analyzer) .setLensType(LensEngine.BACK_LENS) .applyDisplayDimension(1440, 1080) .applyFps(30.0f) .enableAutomaticFocus(true) .create();
// 请自行实现SurfaceView控件的其他逻辑。 SurfaceView mSurfaceView = findViewById(R.id.surface_view); try { lensEngine.run(mSurfaceView.getHolder()); } catch (IOException e) { // 异常处理逻辑。 }
if (analyzer != null) { analyzer.stop(); } if (lensEngine != null) { lensEngine.release(); }
到此,相信大家对“如何使用超简单集成HMS Core ML Kit场景识别,构建相册管理新模式”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。