前言
大家有沒有遇到過這種情況,在瀏覽微博或者公眾號時看到一段有趣的文字剥险,于是截圖發(fā)到朋友圈想和好友分享聪蘸。但是在發(fā)布圖片時,軟件會對圖片強(qiáng)制進(jìn)行壓縮表制,導(dǎo)致圖片分辨率下降健爬,文字變得模糊難以閱讀。那么有沒有什么辦法可以解決這種情況呢么介?當(dāng)然有啦娜遵。華為HMS ML Kit提供了文字超分技術(shù),可以突破圖像中文本分辨率的物理限制壤短,對包含文字內(nèi)容的圖像進(jìn)行9倍放大(長寬各放大3倍)设拟,同時顯著增強(qiáng)圖像中文字的清晰度和可辨識度,輕松解決圖片中文字分辨率低的問題久脯。
應(yīng)用場景
文字超分技術(shù)在生活中有很多的應(yīng)用場景纳胧,比如剛剛提到朋友圈發(fā)布的截圖被壓縮時,文字超分技術(shù)可以把截圖還原到高清晰度帘撰。
或者是在文檔翻拍時跑慕,因?yàn)榫嚯x遠(yuǎn)、未聚焦等原因摧找,導(dǎo)致拍攝的文字不清晰核行。文字超分技術(shù)可以提高翻拍文檔的清晰度和可辨識度牢硅,讓文檔中的字變得清晰。
怎么樣芝雪,是不是很實(shí)用唤衫?下面給大家簡單介紹如何集成HMS ML Kit文字超分服務(wù)骡和。
開發(fā)實(shí)戰(zhàn)
[if !supportLists]1.???? [endif]配置Maven倉地址
[if !supportLists]1.1??[endif]打開Android
Studio項(xiàng)目級“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/'}
? }
?}
[if !supportLists]2.???? [endif]集成文字圖像超分辨率服務(wù)SDK
2.1 Full SDK方式集成(推薦使用)
dependencies{?
??? //引入基礎(chǔ)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 更新機(jī)器學(xué)習(xí)模型
? android:name="com.huawei.hms.ml.DEPENDENCY"?
??????? android:value= "tisr"/>
[if !supportLists]3.???? [endif]代碼開發(fā)
3.1 創(chuàng)建文字圖像超分辨率分析器前鹅。
MLTextImageSuperResolutionAnalyzer analyzer =? MLTextImageSuperResolutionAnalyzerFactory.getInstance().getTextImageSuperResolutionAnalyzer();
3.2 通過android.graphics.Bitmap構(gòu)造MLFrame(注意此處的bitmap類型必須為ARGB8888,請注意做必要的轉(zhuǎn)換)。??? ??????
// 通過bitmap創(chuàng)建MLFrame悴侵,bitmap為輸入的圖片數(shù)據(jù)。
MLFrame frame = new MLFrame.Creator().setBitmap(bitmap).create();
[if !supportLists]3.3? [endif]?對包含文字的圖片進(jìn)行超分辨率處理拭嫁。
Task task =? analyzer.asyncAnalyseFrame(frame);
task.addOnSuccessListener(new OnSuccessListener()? {
??? public void? onSuccess(MLTextImageSuperResolutionResult result) {
??????? //超分成功的處理邏輯可免。
??? }})
? .addOnFailureListener(new OnFailureListener() {
??????? public void? onFailure(Exception e) {
??????????? //超分失敗的處理邏輯。
??????????? if (e instanceof? MLException) {
??????????????? MLException? mlException = (MLException)e;
??????????????? //獲取錯誤碼做粤,開發(fā)者可以對錯誤碼進(jìn)行處理浇借,根據(jù)錯誤碼進(jìn)行差異化的頁面提示。
??????????????? int? errorCode = mlException.getErrCode();
??????????????? //獲取報(bào)錯信息怕品,開發(fā)者可以結(jié)合錯誤碼妇垢,快速定位問題。
??????????????? String? errorMessage = mlException.getMessage();
??????????? } else {
??????????????? //其他異常肉康。
??????? }
});
3.4 超分完成闯估,停止分析器,釋放檢測資源吼和。
if (analyzer != null) {
??? analyzer.stop();
}
Github地址
更詳細(xì)的開發(fā)指南參考華為開發(fā)者聯(lián)盟官網(wǎng)