場景識別幫助小白使用者實現一鍵式智慧拍照修圖

m53469發表於2021-09-09

一、前言

在手機相機功能日益強大的今天,相對於相機硬體的差異,影像處理演算法逐漸顯示出更加重要的地位。現在的消費者也開始由看重硬體能力慢慢轉向對演算法能力的重視。使用者在拍照發朋友圈之前往往需要根據場景逐個調整畫面引數,這一過程費時費力,對於小白使用者又很難調節到最佳狀態。有沒有一種方式可以精細化區分場景,實現一鍵式智慧拍照修圖呢?華為機器學習服務近期推出的場景識別支援102種細分場景的識別,對於生活旅行常見的場景諸如沙灘、藍天、美食、夜景、綠植、典型建築等場景都可以精準地識別出來,配合影像矩陣進行精細化調參,幫助打造更加主動智慧、省時省力的移動應用。讓我們看一看增強效果。

二、增強效果

對於城市夜景圖,場景識別可以準確識別出夜景,然後將圖片中的亮部增量,暗部變暗,整個照片比之前看起來層次感更強,夜景效果更加純粹。

圖片描述

然後測試一張天空的圖片,在準確識別天空場景之後透過增強矩陣將略顯昏暗的天空變得明亮起來。

圖片描述

以及對於綠植、花朵的拍照增強。

圖片描述

圖片描述

當然,以上demo對於各種圖片的增強效果可能有細微的不同,當然可以根據自己的風格來選擇或搭配濾鏡。

所以讓我們瞭解開發原理之後再開發自己的相機模式吧。

三、開發步驟

  1. 建立場景識別檢測器例項。
MLSceneDetectionAnalyzer analyzer = MLSceneDetectionAnalyzerFactory.getInstance().getSceneDetectionAnalyzer();
  1. 透過android.graphics.Bitmap構造MLFrame,支援的圖片格式包括:jpg/jpeg/png/bmp。
MLFrame frame = new MLFrame.Creator().setBitmap(bitmap).create();
  1. 場景識別。
 Task<List<MLSceneDetection>> task = this.analyzer.asyncAnalyseFrame(frame);
 task.addOnSuccessListener(new OnSuccessListener<List<MLSceneDetection>>() {
     @Override
     public void onSuccess(List<MLSceneDetection> sceneInfos) {
         // Processing logic for scene detection success.
         
     }
 }).addOnFailureListener(new OnFailureListener() {
     @Override
     public void onFailure(Exception e) {
         // Processing logic for scene detection failure.
         if (e instanceof MLException) {
             MLException exception = (MLException) e;
             // Obtain the result code.
             int errCode = exception.getErrCode();
             // Obtain the error information.
             String message = exception.getMessage();
         } else {
             // Other errors.
         }
     }
 });
  1. 檢測完成,停止分析器,釋放檢測資源。
if (analyzer != null) {
     analyzer.stop();
 }  
 
 
maven地址
buildscript {
     repositories {
         maven { url 'https://developer.huawei.com/repo/' }
     }
 }
 allprojects {
     repositories {
         maven { url 'https://developer.huawei.com/repo/' }
     }
 }

引入SDK

dependencies {
     // Scene detection SDK.
     implementation 'com.huawei.hms:ml-computer-vision-scenedetection:2.0.3.300'
     // Scene detection model.
     implementation 'com.huawei.hms:ml-computer-vision-scenedetection-model:2.0.3.300'
 }

清單檔案

<manifest
     ...
     <meta-data
         android:name="com.huawei.hms.ml.DEPENDENCY"
         android:value="1" />
     ...
 </manifest>

許可權

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 <uses-permission android:name="android.permission.CAMERA" />
 <uses-feature android:name="android.hardware.camera" />
 <uses-feature android:name="android.hardware.autofocus" />

動態許可權申請

if (!(ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED)) {
     requestCameraPermission();
 }

四、總結

華為機器學習場景識別提供的更加主動的智慧是未來應用趨勢,除了用於拍照效果增強,場景識別還可以用來進行相簿管理及場景圖片檢索,幫助您構建精細化的分類獲取和管理。

原作者:timer

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2819/viewspace-2826701/,如需轉載,請註明出處,否則將追究法律責任。

相關文章