OpenCV+tess-two的隨筆

前提:突發(fā)情況下需要去了解下“文字的識(shí)別”的技術(shù)(android 平臺(tái)下)。然后立馬想到的方法有

1.利用現(xiàn)有的SDK.

2.查找開(kāi)源的技術(shù)的烁。

先說(shuō)說(shuō)現(xiàn)有的SDK吧。首先找到的是百度云:https://cloud.baidu.com/product/ocr.html

不過(guò)測(cè)試結(jié)果不太理想卵惦,他們的做法是拍照->截圖->圖片轉(zhuǎn)Base64 上傳到服務(wù)器識(shí)別歉备。大多數(shù)情況下對(duì)手寫(xiě)字體的識(shí)別率很低。機(jī)打字體還是有一定的成功率的咸灿。其他的證件識(shí)別就沒(méi)有測(cè)試過(guò)构订。另外提一句就是百度提供的是在一定的次數(shù)下是免費(fèi)的。

具體的實(shí)現(xiàn)方式看百度云的文檔說(shuō)明了,不過(guò)有一點(diǎn):在創(chuàng)建app的時(shí)候

這個(gè)(文字識(shí)別包名)是需要鉤上的?避矢。不然的話識(shí)別不了悼瘾。

其他的SDK 暫時(shí)沒(méi)有查找咯。

遵循做技術(shù)的嘛审胸,看看實(shí)現(xiàn)文字識(shí)別是用哪里技術(shù)實(shí)現(xiàn)的亥宿。最后發(fā)現(xiàn)實(shí)現(xiàn)的技術(shù)之一是用openCV 加上 google 提供的tess-two (其他的技術(shù)實(shí)現(xiàn)方式暫不討論了).大概的思路是

(ps:在這里感謝:shuishuige93? 如果提供代碼的話越好,可惜只是如果)

處理圖像這塊是 是由OpenCV-android(ps:http://opencv.org)擔(dān)任的.版本的話好像到了openCV3.3?∩芭妫可是我android studio 能下載的是3.1的版本

具體的android studio?(android studio 3.0 Beta5? buildToolsVersion:26.0.1)導(dǎo)入方式:


在build.gradle 添加
implementation 'org.opencv:OpenCV-Android:3.1.0'

大部分在網(wǎng)的找出的技術(shù)文檔 和教程 是openCV 的c++ 的 然后就是版本低的烫扼,openCv 還分opencv4android,opencvjava.(不過(guò)技術(shù)都是相同的)?,然而我還是不想用 .cpp 啥的 雖然

android studio 不知道在幾版本后提供了更好的NDK開(kāi)發(fā)套件(cmake).但總感覺(jué)人家提供了opencv4android 后還得去寫(xiě)c(如果是高手尺上,如要定制化的功能還是要寫(xiě)材蛛,咱是小白能最快實(shí)現(xiàn)目的就好了,雖然知識(shí)很重要).所以我嘗試去實(shí)現(xiàn)怎抛。

1.灰度化??卑吭,二值化

灰度圖(Gray Scale Image)又稱灰階圖,它是指把白色與灰色按對(duì)數(shù)關(guān)系分為若干等級(jí)马绝,稱作灰階豆赏。灰度分為256階富稻,用灰度表示的圖像稱為灰度圖

(感謝shuishuige93? )

詳細(xì)的描述 灰度化掷邦,二值化(http://blog.csdn.net/evsqiezi/article/details/7905436

?實(shí)現(xiàn)灰度化方式是OpenCV里的cvtColor(Matsrc, Mat dst, int code); c 下的實(shí)現(xiàn)方式。所以百度了 android 灰度化椭赋。在這里提供了基于bitmap和opencv的很好的解決方式(http://blog.csdn.net/kazichs/article/details/52914406)?(不過(guò)這里使用opencv 對(duì)應(yīng)的不是open 3.1 至少我查看了open3.1的代碼沒(méi)有發(fā)現(xiàn)? OpenCVLoader.initAsync?抚岗,只有openCVLoader.initDebug,這句話肯定要寫(xiě)的,不然會(huì)報(bào)錯(cuò)滴)

2.膨脹和腐蝕

?通俗的說(shuō):

膨脹算法使圖像擴(kuò)大一圈。
腐蝕算法使二值圖像減小一圈哪怔。
腐蝕:刪除對(duì)象邊界的某些像素
膨脹:給圖像中的對(duì)象邊界添加像素

詳細(xì)的說(shuō)明?(ps: http://m.blog.csdn.net/u011028345/article/details/76152243?)

Dilate 使用任意結(jié)構(gòu)元素膨脹圖像,Erode 使用任意結(jié)構(gòu)元素腐蝕圖像.然后又得找宣蔚。

其實(shí)在灰度和二值化的時(shí)候 都是通過(guò) org.opencv.imgproc.Imgproc 下的方法進(jìn)行轉(zhuǎn)變的.其他的都是一些mat 和 bitmap的轉(zhuǎn)換向抢。所以 腐蝕是Imgproc.erode(Mat src, Mat dst, Mat kernel)

膨脹是dilate(Mat src, Mat dst, Mat kernel)

kernel:是一個(gè)腐蝕膨脹計(jì)算的核心

Mat kernel = Imgproc.getStructuringElement( Imgproc.MORPH_RECT,new Size(2, 2));

當(dāng)然具體的參數(shù)另行參考了。

3.還有一個(gè)圖形校正

輪廓提取技術(shù)
霍夫變換知識(shí)
ROI感興趣區(qū)域知識(shí)

這個(gè)就比較蛋疼.雖然參考

http://www.cnblogs.com/skyfsm/p/6902524.html?? 圖像矯正技術(shù)深入探討(這個(gè)應(yīng)該是個(gè)大牛)

http://www.cnblogs.com/panxiaochun/archive/2016/05/20/5512142.html?opencv直線檢測(cè)在c#胚委、Android和ios下的實(shí)現(xiàn)方法

https://github.com/johnhany/MOAAP?針對(duì)的Android版本從API 19到API 21不等挟鸠,同時(shí)使用的OpenCV庫(kù)版本也有2.4.9和2.4.10兩種。本文給出的代碼是在原書(shū)代碼的基礎(chǔ)上亩冬,針對(duì)Android 7.0(API 24)與OpenCV 3.2進(jìn)行了修改艘希,補(bǔ)充了一些注釋,適當(dāng)?shù)卦黾恿艘恍╊A(yù)處理操作硅急,以使代碼整體上更合理?(這里面也講到了霍夫變化)

到此 處理圖像 被亂棍打死了覆享。

文字的識(shí)別

android studio 中導(dǎo)入

implementation 'com.rmtheis:tess-two:8.0.0'

并且在這里 https://github.com/tesseract-ocr/tessdata?下載相應(yīng)的語(yǔ)言文字包(英文:eng.traineddata??? 中文:chi_sim.traineddata),但是一個(gè)個(gè)包不是30m,就是70 m。所以app在進(jìn)行文字識(shí)別的化 最好用tess 提供的套件自己訓(xùn)練簡(jiǎn)單的 語(yǔ)言包铜秆。

下載好后淹真,放到

當(dāng)然tessdata 你也可以寫(xiě)其他的名字,語(yǔ)音包首先要移動(dòng)到內(nèi)存中连茧,在初始化tess中會(huì)查找路徑

m_datapath 是指定的文件路徑核蘸,? m_zh_lang 是語(yǔ)言包的名字?,

并不需要后綴名啸驯。

針對(duì)識(shí)別的話 可以識(shí)別mat 或者bitmap

大概吧客扎,就這些。

最后識(shí)別的結(jié)果罚斗。手寫(xiě)文字 差評(píng)徙鱼,整頁(yè)文字差評(píng),單行截圖(寥寥幾個(gè)文字的)還好的针姿。

所有啊任重而道遠(yuǎn)啊

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末袱吆,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子距淫,更是在濱河造成了極大的恐慌绞绒,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件榕暇,死亡現(xiàn)場(chǎng)離奇詭異蓬衡,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)彤枢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門狰晚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人缴啡,你說(shuō)我怎么就攤上這事壁晒。” “怎么了业栅?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵讨衣,是天一觀的道長(zhǎng)换棚。 經(jīng)常有香客問(wèn)我式镐,道長(zhǎng)反镇,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任娘汞,我火速辦了婚禮歹茶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘你弦。我一直安慰自己惊豺,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布禽作。 她就那樣靜靜地躺著尸昧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪旷偿。 梳的紋絲不亂的頭發(fā)上烹俗,一...
    開(kāi)封第一講書(shū)人閱讀 49,046評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音萍程,去河邊找鬼幢妄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛茫负,可吹牛的內(nèi)容都是我干的蕉鸳。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼忍法,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼潮尝!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起饿序,我...
    開(kāi)封第一講書(shū)人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤勉失,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后嗤堰,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體戴质,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年踢匣,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了告匠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡离唬,死狀恐怖后专,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情输莺,我是刑警寧澤戚哎,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布裸诽,位于F島的核電站,受9級(jí)特大地震影響型凳,放射性物質(zhì)發(fā)生泄漏丈冬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一甘畅、第九天 我趴在偏房一處隱蔽的房頂上張望埂蕊。 院中可真熱鬧,春花似錦疏唾、人聲如沸蓄氧。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)喉童。三九已至,卻和暖如春顿天,著一層夾襖步出監(jiān)牢的瞬間堂氯,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工露氮, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留祖灰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓畔规,卻偏偏與公主長(zhǎng)得像局扶,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子叁扫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容