HarmonyOS之AI能力·文字图像超分
生活随笔
收集整理的這篇文章主要介紹了
HarmonyOS之AI能力·文字图像超分
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、簡介
- 文字圖像超分辨率可以對包含文字內容的圖像進行 9 倍放大(高寬各放大 3 倍),同時增強圖像內文字的清晰度,稱為“文字圖像超分辨率”,簡稱“文字圖像超分”。
- 本超分算法 SDK 基于深度神經網絡開發,使用本 SDK 可以節省算法開發的時間,節省算法模型占用的 ROM 空間,讓應用更加輕便。
- 文字圖像超分辨率支持處理的圖片格式包括 JPEG、JPG、PNG,最終輸出的圖片僅支持 JPEG 格式。
- 文字圖像超分辨率輸入圖片分辨率(長寬之積)應不大于 134 萬像素,并且寬高均不小于 506 像素。
二、應用場景
- 拍照效果增強:增加拍攝內容里文字的清晰度。
- 文字檔案翻拍:翻拍字跡模糊的文字檔案,提升文字的可識別度。
三、API 說明
- 文字圖像超分提供了 setVisionConfiguration() 和 doSuperResolution() 兩個函數接口。
- setVisionConfiguration 是 ITxtImageSuperResolution 接口的成員,通過傳入的 TxtImageSuperResolutionConfiguration,選擇進程調用模式。
- TxtImageSuperResolutionConfiguration 的常用設置:
| setProcessMode() | mode | in | 進程模式定義: VisionConfiguration.MODE_IN(同進程調用) VisionConfiguration.MODE_OUT(跨進程調用) 默認值為VisionConfiguration.MODE_OUT |
- 調用 ITxtImageSuperResolution 的 doSuperResolution() 方法,獲取文字圖像超分辨率后的圖片結果:
- 其中:
-
- image 為待超分的輸入圖片。
-
- 如果 visionCallback 為 null,執行同步調用,結果碼由方法返回,檢測及識別結果由 result 中返回。
-
- 如果 visionCallback 為有效的回調函數,則該函數為異步調用,函數返回時 result 中的值無效,實際識別結果由回調函數返回。
-
- 同步模式調用成功時,該函數返回結果碼0。異步模式調用請求發送成功時,該函數返回結果碼700。
四、開發流程
- 在使用文字圖像超分辨率時,將實現文字圖像超分的相關的類添加至工程:
- 定義 ConnectionCallback 回調,實現連接能力引擎成功與否后的操作:
- 調用 VisionManager.init() 方法,將此工程的 context 和已經定義的 connectionCallback 作為入參,建立與能力引擎的連接。context 應為 ohos.aafwk.ability.Ability 或 ohos.aafwk.ability.AbilitySlice 的實例或子類實例:
- 實例化 VisionImage 對象 image,并傳入待超分圖片 pixelMap:
- 實例化 ImageResult 對象 imageResult,該類在同步模式下用于存放調用 txtImageSuperResolution.doSuperResolution() 方法的超分結果:
- (可選) 定義 VisionCallback< ImageResult > 回調:
- 通過 TxtImageSuperResolutionConfiguration,選擇進程調用模式:
-
- 跨進程模式(MODE_OUT)下調用方與能力引擎處于不同進程;
-
- 同進程模式(MODE_IN)下,能力引擎在調用方進程中實例化,調用方通過反射的方式調用引擎里的文字圖像超分能力。
- 以同進程調用為例:
- (可選)調用 ITxtImageSuperResolution 的 prepare() 方法啟動引擎。
ITxtImageSuperResolution 的 doSuperResolution() 方法中會首先調用 prepare() 啟動引擎,如果引擎已經啟動則不會再次啟動,因此本步驟為可選步驟:
- 說明:
-
- 同步模式調用完成時,該函數立即返回結果碼;
-
- 異步模式調用請求發送成功時,該函數返回結果碼700。如果返回其他的值,說明異步調用請求不成功,需要先處理錯誤,回調函數不會被調用。
-
- 如果異步模式調用請求發送成功,則文字超分完成后,相應的回調函數會被自動調用。
-
-
- 如果onResult()回調被調用,說明超分成功,相當于同步模式結果碼為0的情況。
-
-
-
- 如果onError()方法被調用,則說明文字超分發生了錯誤,具體的調用結果碼將由onError()的參數接收。
-
- 結果碼定義如下表:
| 0 | 成功 |
| -1 | 未知錯誤 |
| -2 | 不支持的功能或接口 |
| -3 | 內存分配失敗或創建對象失敗 |
| -4 | 所需庫加載失敗 |
| -10 | 引擎開關已經關閉 |
| 101 | 失敗 |
| 102 | 超時 |
| 200 | 輸入參數不合法(圖片尺寸錯誤) |
| 201 | 輸入參數不合法(為空) |
| 210 | 輸入參數合法 |
| 500 | 服務綁定異常 |
| 521 | 服務綁定異常斷開 |
| 522 | 服務已連接 |
| 600 | 模型文件異常 |
| 601 | 模型文件不存在 |
| 602 | 模型加載失敗 |
| 700 | 異步調用請求發送成功 |
| 1001 | 神經網絡處理單元錯誤 |
- 調用 ITxtImageSuperResolution 的 release() 方法,釋放資源,調用 pixelMap 的 release() 方法,釋放圖片內存:
- 調用 VisionManager.destroy() 方法,斷開與能力引擎的連接:
總結
以上是生活随笔為你收集整理的HarmonyOS之AI能力·文字图像超分的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HarmonyOS之AI能力·实体识别
- 下一篇: HarmonyOS之AI能力·助手类意图