如今手机摄影越来越方便,随手一拍就能记录美好生活。但照片越多,整理越麻烦,有的时候我们想对照片进行二次加工、分享,需要不停翻找相册。HMS Core机器学习服务(ML Kit)提供了图片分类服务,方便用户在多个场景下快速筛选图片集、定义图片题材并标注分类信息。比如,期末老师时常会要求家长和孩子一起制作亲子成长手册,教育服务类App集成图片分类服务后可以把一个学期以来的所有照片分类汇总成相册;出去玩了多个景点或途径不同城市,旅游分享类App可以帮助用户整理基于某个位置或某个实物进行图片分类;在全场景下手机相册需要把照片同步到大屏上轮播,文件分享类App可以设置分享规则,分类上传。

接下来,请开发者们通过以下开发实战进行体验,同时期待大家将便捷的图片分类服务进一步带给用户~

开发实战

1开发准备

在进行开发前需要配置HMS Core SDK的Maven仓地址:
repositories {
maven {
url'https://cmc.centralrepo.rnd.huawei.com/artifactory/product_maven/' }
}

并集成本SDK:

  1. dependencies {
  2.  // 引入基础SDK
    
    implementation 'com.huawei.hms:ml-computer-vision-classification:3.3.0.300'
  3.  // 引入图片分类模型包
    
  4.  implementation 'com.huawei.hms:ml-computer-vision-image-classification-model:3.3.0.300'
    

}

然后请参见云端鉴权信息使用须知,设置您应用的鉴权信息

2编辑工程集成

2.1设置应用的鉴权信息

可以通过api_key或者Access Token来设置应用鉴权信息。

通过setAccessToken方法设置Access Token,在应用启动时初始化设置一次即可,无需多次设置。
MLApplication.getInstance().setAccessToken("your access token");

通过setApiKey方法设置api_key,在应用启动时初始化设置一次即可,无需多次设置。
MLApplication.getInstance().setApiKey("your ApiKey");

2.2创建静态图片检测器

// 方式一:端侧识别使用自定义参数配置。

MLLocalClassificationAnalyzerSetting setting =
new MLLocalClassificationAnalyzerSetting.Factory()
.setMinAcceptablePossibility(0.8f)
.create();
MLImageClassificationAnalyzer analyzer = MLAnalyzerFactory.getInstance().getLocalImageClassificationAnalyzer(setting);

// 方式二:端侧识别使用默认参数配置。

MLImageClassificationAnalyzer analyzer = MLAnalyzerFactory.getInstance().getLocalImageClassificationAnalyzer();

2.3创建MLFrame

// 通过bitmap创建MLFrame,bitmap为输入的Bitmap格式图片数据。支持的图片格式包括:jpg/jpeg/png/bmp,建议图片尺寸不小于112*112像素。

MLFrame frame = MLFrame.fromBitmap(bitmap);

2.4调用asyncAnalyseFrame方法进行图像分类


Task<List<MLImageClassification>> task = analyzer.asyncAnalyseFrame(frame);

task.addOnSuccessListener(new OnSuccessListener<List<MLImageClassification>>() {

    @Override

    public void onSuccess(List<MLImageClassification> classifications) {

        // 识别成功。

        // 遍历返回的列表MLImageClassification,获取分类名称等信息。

    }

}).addOnFailureListener(new OnFailureListener() {

    @Override

    public void onFailure(Exception e) {

        // 识别失败。

        // Recognition failure.

        try {
            MLException mlException = (MLException)e;
            // 获取错误码,开发者可以对错误码进行处理,根据错误码进行差异化的页面提示。
            int errorCode = mlException.getErrCode();
            // 获取报错信息,开发者可以结合错误码,快速定位问题。
            String errorMessage = mlException.getMessage();
        } catch (Exception error) {
            // 转换错误处理。
        }
    }
});

2.5识别完成后停止分析器


try {
    if (analyzer != null) {
       analyzer.stop();
    }
} catch (IOException e) {
 // 异常处理。
}

3演示及说明

3.1说明

图片分类功能包含静态端侧、静态云侧、动态检测,以上示例仅为静态端侧功能。

3.2演示

图片杂乱无章、分享麻烦?HMS Core图片分类服务教你快速筛选、分类、整合相册-LMLPHP

了解更多详情>>

访问华为开发者联盟官网
获取开发指导文档
华为移动服务开源仓库地址:GitHubGitee

关注我们,第一时间了解 HMS Core 最新技术资讯~

04-12 11:18