美文网首页OpenCv程序员
Android tess-two车牌识别

Android tess-two车牌识别

作者: 高巨龙 | 来源:发表于2018-06-07 20:32 被阅读43次

    案例下载 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处理二值化后再进行识别!

    相关文章

      网友评论

        本文标题:Android tess-two车牌识别

        本文链接:https://www.haomeiwen.com/subject/npcnsftx.html