溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用超簡(jiǎn)單集成HMS Core ML Kit場(chǎng)景識(shí)別,構(gòu)建相冊(cè)管理新模式

發(fā)布時(shí)間:2021-10-23 17:54:28 來(lái)源:億速云 閱讀:147 作者:iii 欄目:編程語(yǔ)言

本篇內(nèi)容主要講解“如何使用超簡(jiǎn)單集成HMS Core ML Kit場(chǎng)景識(shí)別,構(gòu)建相冊(cè)管理新模式”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“如何使用超簡(jiǎn)單集成HMS Core ML Kit場(chǎng)景識(shí)別,構(gòu)建相冊(cè)管理新模式”吧!

功能特性

華為場(chǎng)景識(shí)別服務(wù)支持對(duì)圖片的場(chǎng)景內(nèi)容進(jìn)行分類并添加標(biāo)注信息,如美食、花朵、綠植、貓、狗、廚房、山峰、洗衣機(jī)等102種場(chǎng)景,并基于識(shí)別到的信息,構(gòu)建更智能的相冊(cè)應(yīng)用體驗(yàn)。

場(chǎng)景識(shí)別具有以下功能特性:

  • 多類場(chǎng)景識(shí)別 支持102種場(chǎng)景的識(shí)別,并持續(xù)增加。

  • 識(shí)別準(zhǔn)確率高 可識(shí)別多種物品、場(chǎng)景,識(shí)別準(zhǔn)確率高。

  • 識(shí)別響應(yīng)速度快 毫秒級(jí)響應(yīng)速度,并不斷優(yōu)化性能表現(xiàn)。

  • 集成簡(jiǎn)單高效 提供API接口和SDK包,方便客戶集成,操作簡(jiǎn)單,減少開發(fā)成本。

應(yīng)用場(chǎng)景

場(chǎng)景識(shí)別除了應(yīng)用于建立智能相冊(cè)、照片檢索和分類外,還可以識(shí)別拍攝場(chǎng)景自動(dòng)選擇相應(yīng)的場(chǎng)景濾鏡和相機(jī)參數(shù),幫助用戶拍攝出更好看的照片。

開發(fā)代碼

1 開發(fā)準(zhǔn)備工作

1.1 配置AppGallery Connect。

在開發(fā)應(yīng)用前,需要在AppGallery Connect中配置相關(guān)信息。 具體操作步驟,請(qǐng)參考下方鏈接: https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides-V5/config-agc-0000001050990353-V5

1.2 配置HMS Core SDK的Maven倉(cāng)地址,并完成本服務(wù)的SDK集成。

(1)打開Android Studio項(xiàng)目級(jí)“build.gradle”文件。

如何使用超簡(jiǎn)單集成HMS Core ML Kit場(chǎng)景識(shí)別,構(gòu)建相冊(cè)管理新模式 (2)添加HUAWEI agcp插件以及Maven代碼庫(kù)。

  • 在“allprojects > repositories”中配置HMS Core SDK的Maven倉(cāng)地址。

  • 在“buildscript > repositories”中配置HMS Core SDK的Maven倉(cāng)地址。

  • 如果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/'}
    }
}

2 開發(fā)代碼

靜態(tài)圖片檢測(cè)

2.1 創(chuàng)建場(chǎng)景識(shí)別檢測(cè)器實(shí)例。

// 方式1:使用默認(rèn)的參數(shù)配置。
MLSceneDetectionAnalyzer analyzer = MLSceneDetectionAnalyzerFactory.getInstance().getSceneDetectionAnalyzer();
// 方式2:按自定義配置創(chuàng)建場(chǎng)景識(shí)別分析器實(shí)例。
MLSceneDetectionAnalyzerSetting setting = new MLSceneDetectionAnalyzerSetting.Factory()
     // 設(shè)置場(chǎng)景識(shí)別可信度閾值。
     .setConfidence(confidence)
     .create();
MLSceneDetectionAnalyzer analyzer = MLSceneDetectionAnalyzerFactory.getInstance().getSceneDetectionAnalyzer(setting);

2.2 通過(guò)android.graphics.Bitmap構(gòu)造MLFrame,支持的圖片格式包括:jpg/jpeg/png/bmp。

MLFrame frame = new MLFrame.Creator().setBitmap(bitmap).create();

2.3 進(jìn)行場(chǎng)景識(shí)別。

// 方式1:同步識(shí)別。
SparseArray<MLSceneDetection> results = analyzer.analyseFrame(frame);
// 方式2:異步識(shí)別。
Task<List<MLSceneDetection>> task = analyzer.asyncAnalyseFrame(frame);
task.addOnSuccessListener(new OnSuccessListener<List<MLSceneDetection>>() {
    public void onSuccess(List<MLSceneDetection> result) {
        // 場(chǎng)景識(shí)別成功的處理邏輯。
    }})
    .addOnFailureListener(new OnFailureListener() {
        public void onFailure(Exception e) {
            // 場(chǎng)景識(shí)別識(shí)別失敗的處理邏輯。
            // failure.
            if (e instanceof MLException) {
                MLException mlException = (MLException)e;
                // 獲取錯(cuò)誤碼,開發(fā)者可以對(duì)錯(cuò)誤碼進(jìn)行處理,根據(jù)錯(cuò)誤碼進(jìn)行差異化的頁(yè)面提示。
                int errorCode = mlException.getErrCode();
                // 獲取報(bào)錯(cuò)信息,開發(fā)者可以結(jié)合錯(cuò)誤碼,快速定位問(wèn)題。
                String errorMessage = mlException.getMessage();
            } else {
                // 其他異常。
        }
    }
});

2.4 檢測(cè)完成,停止分析器,釋放檢測(cè)資源。

if (analyzer != null) {
    analyzer.stop();
}

視頻流檢測(cè)

開發(fā)者可以自行處理視頻流,將視頻流轉(zhuǎn)化為MLFrame對(duì)象,再按靜態(tài)圖像檢測(cè)的方法進(jìn)行場(chǎng)景識(shí)別。

如果開發(fā)者調(diào)用的是同步檢測(cè)接口,也可以使用SDK內(nèi)置的LensEngine類實(shí)現(xiàn)視頻流場(chǎng)景識(shí)別。示例代碼如下:

3.1 創(chuàng)建場(chǎng)景識(shí)別分析器,只支持創(chuàng)建端側(cè)場(chǎng)景識(shí)別分析器。

MLSceneDetectionAnalyzer analyzer = MLSceneDetectionAnalyzerFactory.getInstance().getSceneDetectionAnalyzer();

3.2 開發(fā)者創(chuàng)建識(shí)別結(jié)果處理類“SceneDetectionAnalyzerTransactor”,該類實(shí)現(xiàn)MLAnalyzer.MLTransactor<T>接口,使用該接口中的transactResult方法獲取檢測(cè)結(jié)果并實(shí)現(xiàn)具體業(yè)務(wù)。

public class SceneDetectionAnalyzerTransactor implements MLAnalyzer.MLTransactor<MLSceneDetection> {
    @Override
    public void transactResult(MLAnalyzer.Result<MLSceneDetection> results) {
        SparseArray<MLSceneDetection> items = results.getAnalyseList();
        // 開發(fā)者根據(jù)需要處理識(shí)別結(jié)果,需要注意,這里只對(duì)檢測(cè)結(jié)果進(jìn)行處理。
        // 不可調(diào)用ML Kit提供的其他檢測(cè)相關(guān)接口。
    }
    @Override
    public void destroy() {
        // 檢測(cè)結(jié)束回調(diào)方法,用于釋放資源等。
    }
}

3.3 設(shè)置識(shí)別結(jié)果處理器,實(shí)現(xiàn)分析器與結(jié)果處理器的綁定。

analyzer.setTransactor(new SceneDetectionAnalyzerTransactor());
// 創(chuàng)建LensEngine,該類由ML Kit SDK提供,用于捕捉相機(jī)動(dòng)態(tài)視頻流并傳入分析器。
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();

3.4 調(diào)用run方法,啟動(dòng)相機(jī),讀取視頻流,進(jìn)行識(shí)別。

// 請(qǐng)自行實(shí)現(xiàn)SurfaceView控件的其他邏輯。
SurfaceView mSurfaceView = findViewById(R.id.surface_view);
try {
    lensEngine.run(mSurfaceView.getHolder());
} catch (IOException e) {
    // 異常處理邏輯。
}

3.5 檢測(cè)完成,停止分析器,釋放檢測(cè)資源。

if (analyzer != null) {
    analyzer.stop();
}
if (lensEngine != null) {
    lensEngine.release();
}

DEMO展示

如何使用超簡(jiǎn)單集成HMS Core ML Kit場(chǎng)景識(shí)別,構(gòu)建相冊(cè)管理新模式

到此,相信大家對(duì)“如何使用超簡(jiǎn)單集成HMS Core ML Kit場(chǎng)景識(shí)別,構(gòu)建相冊(cè)管理新模式”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI