Android tess-two車牌識別

Android tess-two車牌識別

 

 

案例下載 github地址

image.png

一、下載

1.tess-two源碼 下載鏈接

因爲Tesseract使用C++實現的,在Android中不能直接使用,需要封裝JavaAPI才能在Android平臺中進行調用,這裏我們直接使用TessTwo項目,tess-two是TesseraToolsForAndroid的一個git分支,使用簡單,切集成了leptonica,在使用之前需要先從git上下載源碼進行ndk編譯。

2.tessdata語言數據文件 下載鏈接

下載後需要導入到手機根目錄下,這裏只是作車牌識別,所以只要英文的語言數據eng.traineddata就夠了。

image.png

二、編譯tess-two

  • 第一步 下載好tess-two源文件後,終端進入tess-two文件夾

     

    image.png

  • 第二步 編譯生成.so文件,過程可能有點慢大概20分鐘 ,如果沒有安裝ndk請參考這裏
    <查看MacOS ndk配置>

ndk-build

image.png

  • 第三步 查看tess-two裏的libs文件,裏面就是我們所需要的不同框架so文件

image.png

三、項目搭建

1.新建一個空項目,把生成的so文件放入到lisb文件裏

 

image.png


2.找到源文件tess-two裏src文件裏的com文件,複製到項目裏

 

 

image.png


3.代碼其實很簡單,如果只用於車牌識別有一個技巧,就是設置白名單和黑名單

 

TessBaseAPI baseApi = new TessBaseAPI();  
baseApi.init(getSDPath(), language);//設置語言和獲取路徑
baseApi.setVariable(TessBaseAPI.VAR_CHAR_WHITELIST, "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"); // 識別白名單
baseApi.setVariable(TessBaseAPI.VAR_CHAR_BLACKLIST, "!@#$%^&*()_+=-[]}{;:'\"\\|~`,./<>?"); // 識別黑名單

4.配置build.gradle

android {
    ndk {
            abiFilters "armeabi-v7a", "x86", "armeabi"
        }

        sourceSets { main { jniLibs.srcDirs = ['libs']
        }}
   }

5.最後別忘記添加讀寫權限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

image.png

四、把訓練語言數據放入到根目錄

1.在根目錄下創建一個文件夾名字必須爲tessdata(必鬚根目錄和tessdata命名)
2.把 eng.traineddata放入tessdata裏

image.png

 

總結:

介紹的可能有點粗糙,源碼放在了github 點擊查看 ,有不清楚的地方可以留言,此項目對於生活中車牌識別成功率很低,後邊文章會介紹和OpenCV一起使用。先用OpenCV處理二值化後再進行識別!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章