如今手機攝影越來越方便,隨手一拍就能記錄美好生活。但照片越多,整理越麻煩,有的時候我們想對照片進行二次加工、分享,需要不停翻找相簿。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:
- dependencies {
- // 引入基礎SDK
implementation 'com.huawei.hms:ml-computer-vision-classification:3.3.0.300'
- // 引入圖片分類模型包
- 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方法進行影像分類
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | 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 識別完成後停止分析器
1 2 3 4 5 6 7 | try {
if (analyzer ! = null) {
analyzer.stop();
}
} catch (IOException e) {
/ / 異常處理。
}
|
3 演示及說明
3.1說明
圖片分類功能包含靜態端側、靜態雲側、動態檢測,以上示例僅為靜態端側功能。
3.2 演示
瞭解更多詳情>>
訪問華為開發者聯盟官網
獲取開發指導文件
華為移動服務開源倉庫地址:GitHub、Gitee
關注我們,第一時間瞭解 HMS Core 最新技術資訊~