這裡
如題所示,今天的課程是如題所示,今天的課程是一堂實踐小課。一堂實踐小課。 課程示例在android 9環境下順利執行,android studio使用版本為3.5.2,大家在學習之前請安裝好android studio。
自動批改算術題的程式開發流程比較簡單,其執行流程如下圖所示:
支援拍照和本地選擇兩種模式,核心在於呼叫科大訊飛提供的「拍照速算識別」引擎,然後解析引擎,返回的結果進行繪圖展示即可。
以上的課前準備完成之後,接下來就可以進入程式開發環節啦~
第一部曲: 拍照並展示
呼叫相機的核心**如下
// 啟動相機程式
intent intent =
newintent
("android.media.action.image_capture");
intent.
putextra
(mediastore.extra_output, imageuri)
;startactivityforresult
(intent,1)
;try
catch
(exception e)
第二部曲: 訪問檔案
//如果沒有許可權則申請許可權
if(contextcompat.
checkselfpermission
(imagealbumshow.
this
, manifest.permission.write_external_storage)
!= packagemanager.permission_granted),1
);}//呼叫開啟相簿
openalbum()
;private
void
openalbum()
第三部曲: 拍照速算識別引擎呼叫在獲取到小學算數題的後,就可以開始呼叫拍照速算識別引擎了,在呼叫業務介面時,都需要在 http request body 中配置以下引數,請求資料均為json字串。
需要注意的是,示例**中的星號部分需要替換為環境準備階段申請的應用授權資訊:
// itr webapi 介面位址,請到訊飛開放平台申請api使用
// 應用id(到控制台獲取)
private
static
// 介面apikey(到控制台的拍照速算識別頁面獲取)
private
static
final string api_key =
"*****"
;// 介面apisercet(到控制台的拍照速算識別頁面獲取)
private
static
final string api_secret =
"*****"
;public
static
byte
imagebytearray;
第四部曲: 解析識別結果引擎返回結果為乙個json結構,包含字段如下:
識別結果資訊在data欄位裡,其中主要包含了識別出來的每個算數題的位置資訊、算術題的識別文字結果、算數題判決正誤資訊。
第五部曲: 繪圖並展示
對於計算正確的算術題使用綠色方框顯示,對於計算錯誤的算術題使用紅色方框顯示。
private
void
displayimage
(bitmap image_bitmap)
catch
(filenotfoundexception e)
// 將繪製好的展示出來
picture.
setimagebitmap
(bitmap);}
else
}private bitmap image_itr
(bitmap image_bitmap)}}
catch
(exception e)
return image_bitmap;
}private bitmap draw_image
(bitmap imagebitmap ,
int x1,
int y1,
int x2,
int y2,
int result)
第六部曲: 效果展示
至此,開發過程完成,讓我們來體驗一下程式的執行效果:
(1) 點開主介面,這裡為了方便展示,選擇「相簿」
(2) 選擇一張事先拍好的小學算數題
(3) 展示自動批改後的效果圖
我終於也碰到volatile這個問題了
以前上arm課,老師講到volatile這個關鍵字時,主要是說他用到更硬體相關的地方。比如我們看到很多關於硬體的標頭檔案的時候,暫存器的定義都是幾乎都是volatile與記憶體位址相結合,因為我們時刻想要的是暫存器的最新值,而volatile這個關鍵字的作用就是告訴編譯器不要對它宣告的變數進行優化,...
12306終於把這個「秒殺」缺陷給補上了
東方網1月21日訊息 儘管所有火車票都實行了實名制,記者昨天暗訪發現,依然有個別黃牛在火車站附近兜售熱門線路的火車票。應對倒票的新花招,鐵路部門與黃牛展開了一場 技術戰 探訪 黃牛稱可弄到實名車票 昨天下午近4時,軌交3號線通往鐵路上海站南廣場的地下通道內。在一片 發票 發票 的叫賣聲中,夾雜著一名...
自動生成四則運算題目
主要功能 用於計算小學四則運算。設計思想 乙個能處理四則運算的程式,實現語言c 可以處理實數。源 include stdafx.h include calc win.h include calc windlg.h ifdef debug define new debug new endif afxe...