前言
大家有沒有遇到過這種情況,在瀏覽微博或者公眾號時看到一段有趣的文字,於是截圖發到朋友圈想和好友分享。但是在釋出圖片時,軟體會對圖片強制進行壓縮,導致圖片解析度下降,文字變得模糊難以閱讀。那麼有沒有什麼辦法可以解決這種情況呢?當然有啦。華為HMS ML Kit提供了文字超分技術,可以突破影像中文字解析度的物理限制,對包含文字內容的影像進行9倍放大(長寬各放大3倍),同時顯著增強影像中文字的清晰度和可辨識度,輕鬆解決圖片中文字解析度低的問題。
應用場景
文字超分技術在生活中有很多的應用場景,比如剛剛提到朋友圈釋出的截圖被壓縮時,文字超分技術可以把截圖還原到高清晰度。
或者是在文件翻拍時,因為距離遠、未聚焦等原因,導致拍攝的文字不清晰。文字超分技術可以提高翻拍文件的清晰度和可辨識度,讓文件中的字變得清晰。
怎麼樣,是不是很實用?下面給大家簡單介紹如何整合HMS ML Kit文字超分服務。
開發實戰
1. 配置Maven倉地址
1.1 開啟Android Studio專案級“build.gradle”檔案
1.2 新增HUAWEI agcp外掛以及Maven程式碼庫。
在allprojects ->repositories裡面配置HMS Core SDK的Maven倉地址。
allprojects {
repositories {
google()
jcenter()
maven {url 'https://developer.huawei.com/repo/'}
}
}
在buildscript->repositories裡面配置HMS Core SDK的Maven倉地址。
buildscript {
repositories {
google()
jcenter()
maven {url 'https://developer.huawei.com/repo/'}
}
}
2. 整合文字影像超解析度服務SDK
2.1 Full SDK方式整合(推薦使用)
dependencies{
// 引入基礎SDK
Implementation 'com.huawei.hms:ml-computer-vision-textimagesuperresolution:2.0.3.300'
// 引入文字影像超解析度模型包
implementation 'com.huawei.hms:ml-computer-vision-textimagesuperresolution-model:2.0.3.300'
}
2.2 檔案頭新增配置
apply plugin: 'com.android.application'
apply plugin: 'com.huawei.agconnect'
2.3 更新機器學習模型
<meta-data
android:name="com.huawei.hms.ml.DEPENDENCY"
android:value= "tisr"/>
3. 程式碼開發
3.1 建立文字影像超解析度分析器
MLTextImageSuperResolutionAnalyzer analyzer = MLTextImageSuperResolutionAnalyzerFactory.getInstance().getTextImageSuperResolutionAnalyzer();
3.2 通過android.graphics.Bitmap構造MLFrame(注意此處的bitmap型別必須為ARGB8888,請注意做必要的轉換)
// 通過bitmap建立MLFrame,bitmap為輸入的圖片資料。
MLFrame frame = new MLFrame.Creator().setBitmap(bitmap).create();
3.3 對包含文字的圖片進行超解析度處理
Task<MLTextImageSuperResolutionResult> task = analyzer.asyncAnalyseFrame(frame);
task.addOnSuccessListener(new OnSuccessListener<MLTextImageSuperResolutionResult>() {
public void onSuccess(MLTextImageSuperResolutionResult result) {
// 超分成功的處理邏輯。
}})
.addOnFailureListener(new OnFailureListener() {
public void onFailure(Exception e) {
// 超分失敗的處理邏輯。
if (e instanceof MLException) {
MLException mlException = (MLException)e;
// 獲取錯誤碼,開發者可以對錯誤碼進行處理,根據錯誤碼進行差異化的頁面提示。
int errorCode = mlException.getErrCode();
// 獲取報錯資訊,開發者可以結合錯誤碼,快速定位問題。
String errorMessage = mlException.getMessage();
} else {
// 其他異常。
}
});
3.4 超分完成,停止分析器,釋放檢測資源
if (analyzer != null) {
analyzer.stop();
}
Github地址
更詳細的開發指南參考華為開發者聯盟官網
https://developer.huawei.com/consumer/cn/hms/huawei-mlkit
欲瞭解更多詳情,請參閱:
華為開發者聯盟官網:https://developer.huawei.com/consumer/cn/hms
獲取開發指導文件:https://developer.huawei.com/consumer/cn/doc/development
參與開發者討論請到Reddit社群:https://www.reddit.com/r/HMSCore/
下載demo和示例程式碼請到Github:https://github.com/HMS-Core
解決整合問題請到Stack Overflow:https://stackoverflow.com/questions/tagged/huawei-mobile-services?tab=Newest
原文連結:
https://developer.huawei.com/consumer/cn/forum/topicview?tid=0203349782674210504&fid=18
作者:留下落葉