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處理二值化後再進行識別!