• 【EasyPR】Linux安装使用EasyPR开源车牌识别系统


    【EasyPR】Linux安装使用EasyPR开源车牌识别系统

    零、安装OpenCV - 3.2.0

    我使用的是Kali系统,基于Debian的一个Linux发行版本。

    1.配置系统的软件源(配置正确可跳过)

    --参考阿里云开发者网站:https://developer.aliyun.com/mirror/kali

    修改源列表
    执行命令

    sudo vim /etc/apt/sources.list
    

    按i键编辑,添加阿里云给出的镜像地址,或者直接把内容替换成下面的内容:

    deb https://mirrors.aliyun.com/kali kali-rolling main non-free contrib
    deb-src https://mirrors.aliyun.com/kali kali-rolling main non-free contrib
    

    按Esc键退出编辑模式,输入

    :wq
    

    回车,保存并退出。

    更新
    执行命令以更新源

    sudo apt-get update
    

    更新软件(可选,无必要不建议)

    sudo apt-get upgrade
    

    2.安装cmake程序

    检查安装
    首先查看下系统安装了没有

    cmake -version
    

    如果没有版本信息,则到官网下载或者直接用软件源安装。版本必须大于2.8.7。
    软件源安装(推荐)
    输入命令:

    apt-get install cmake
    

    用上文所述方法检查版本,正常即可,否则可以用以下方法手动编译安装。

    手动安装:下载

    -- 下载地址:https://cmake.org/download/
    这里我使用3.13.2版本的cmake

    wget https://github.com/Kitware/CMake/releases/download/v3.13.2/cmake-3.13.2.tar.gz
    

    手动安装:编译安装
    解压下载得到的文件

    tar xf cmake-3.13.2.tar.gz
    

    进入到解压目录

    cd cmake-3.13.2
    

    配置

    ./bootstrap --prefix=$HOME/local
    

    编译安装

    make && make install
    

    手动安装:检查安装

    • 设置环境
    export PATH=$HOME/local/bin:$PATH
    
    • 检查版本
    cmake -version
    
    • 出现版本信息则安装成功!

    3.配置pkg-config环境

    软件源安装
    执行命令:

    apt-get install pkg-config
    

    或者手动安装:

    下载pkg-config

    这里我使用的是pkg-config的0.29.2版本
    -- pkg-config官网:https://www.freedesktop.org/wiki/Software/pkg-config/

    下载

    wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.29.2.tar.gz
    

    解压

    tar -zxvf pkg-config-0.29.2.tar.gz
    

    进入解压目录

    cd pkg-config-0.29.2
    

    依次执行下面的命令

    ./configure
    make
    make check
    sudo make install
    

    如果第一条报错,把第一条换成

    ./configure --with-internal-glib
    

    如果第三条报错,把路径改为全英文并且重新解压执行,并在第三条命令前加上sudo再执行。

    安装检查

    pkg-config --version
    

    正常输出版本号0.29.2即安装成功!

    3.安装其他依赖

    通过软件源安装libopenexr-dev:

    sudo apt-get install libopenexr-dev
    

    4.配置开发环境OpenCV - 3.2.0

    这边EasyPR使用的是OpenCV - 3.2.0,我们也配置同样的开发环境。

    下载OpenCV - 3.2.0

    -- 下载地址:https://github.com/Itseez/opencv/archive/3.2.0.zip(普通用户建议使用联通的网络,此时亲测更快)

    wget https://github.com/Itseez/opencv/archive/3.2.0.zip
    

    下载好之后解压

    使用unzip解压,没有unzip的先安装unzip。
    unzip安装

    sudo apt-get install unzip
    

    解压

    unzip opencv-3.2.0.zip
    

    进入opencv目录

    cd opencv-3.2.0
    

    创建release目录
    有博客称在release目录下编译有错,在opencv-3.2.0目录下没有,我是在release目录下编译的,没错,反而在opencv-3.2.0目录下编译有错。

    mkdir release
    

    进入进入release目录
    安装OpenCV时,所有的文件都会被放到这个release目录下

    cd release
    

    使用cmake编译OpenCV的源码,安装到/usr/local/目录下

    cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/ ..
    

    如果出现这个错误:

    /usr/include/c++/7/cstdlib:75:15: fatal error: stdlib.h: 没有那个文件或目录
    

    把命令替换成

    cmake -D CMAKE_BUILD_TYPE=RELEASE -D ENABLE_PRECOMPILED_HEADERS=OFF -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3.1.0 .. 
    

    安装

    sudo make install -j7
    

    如果出现这个错误:

    make[2]: *** [modules/python3/CMakeFiles/opencv_python3.dir/build.make:180:modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o] 错误 1  
    make[1]: *** [CMakeFiles/Makefile2:6687:modules/python3/CMakeFiles/opencv_python3.dir/all] 错误 2  
    make: *** [Makefile:163:all] 错误 2
    

    看输出发现原因其实是这个:

    /home/minuy/download/opencv-3.2.0/modules/python/src2/cv2.cpp:730:34: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]  
    730 | char* str = PyString_AsString(obj);
    

    解决方法:
    编辑 opencv-3.2.0/modules/python/src2/cv2.cpp 文件,更改第730行:

    bool pyopencv_to(PyObject* obj, String& value, const char* name)  
    {  
        (void)name;  
        if(!obj || obj == Py_None)  
            return true;  
        char* str = (char *)PyString_AsString(obj);//这是文件的第730行,更改这行,在=后面加(char *)
        if(!str)  
            return false;  
        value = String(str);  
        return true;  
    }
    

    再重新编译安装就好了。

    一、安装EasyPR

    1.下载EasyPR

    可以直接到gitee上点击“克隆/下载”按钮以下载
    --地址:https://gitee.com/easypr/EasyPR

    也可以输入以下命令来克隆仓库到本地:

    git clone https://gitee.com/easypr/EasyPR.git
    

    2.修改cmake配置文件

    为了避免系统中安装的老版本opencv对编译的影响,需要在 CMakeLists.txt 中修改:

    set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "/usr/local/opt/opencv3")
    

    路径指向opencv3的安装目录,该目录下应该有OpenCV的CMake配置文件。
    例如,我的opencv的源码目录是/home/minuy/download/opencv-3.2.0
    则修改为

    set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "/home/minuy/download/opencv-3.2.0")
    

    3.编译

    进入到EasyPR的目录:

    cd EasyPR
    

    直接执行命令:

    ./build.sh
    

    如果出现这个错误:

    make[2]: *** [CMakeFiles/easypr.dir/build.make:141:CMakeFiles/easypr.dir/src/core/plate_judge.cpp.o] 错误 1  
    make[1]: *** [CMakeFiles/Makefile2:73:CMakeFiles/easypr.dir/all] 错误 2  
    make[1]: *** 正在等待未完成的任务....  
    [ 48%] Linking CXX static library libthirdparty.a  
    [ 48%] Built target thirdparty  
    make: *** [Makefile:84:all] 错误 2
    

    解决方法:
    修改EasyPR/include/easypr/config.h文件的第四行:

    #ifndef EASYPR_CONFIG_H_  
    #define EASYPR_CONFIG_H_  
      
    #define CV_VERSION_THREE_TWO//修改这一行,将#define CV_VERSION_THREE_ZERO改为#define CV_VERSION_THREE_TWO
    

    出现[100%] Built target demo之后即编译成功!

    二、测试

    直接运行dome

    ./demo
    

    输出以下信息:

    ////////////////////////////////////  
    EasyPR Option:  
    1. 测试;  
    2. 批量测试(推荐);  
    3. SVM训练;  
    4. ANN训练;  
    5. 中文字符训练;  
    6. 生成字符;  
    7. 感谢名单;  
    8. 退出;  
    ////////////////////////////////////  
    请选择一项操作:
    

    测试时出现以下错误

    test_plate_locate  
    OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvShowImage, file /home/minuy/download/opencv-3.2.0/modules/highgui/src/window.cpp, line 583  
    terminate called after throwing an instance of 'cv::Exception'  
    what(): /home/minuy/download/opencv-3.2.0/modules/highgui/src/window.cpp:583: error: (-2) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function cvShowImage
    

    解决方法:
    安装libgtk2.0-devpkg-config

    sudo apt-get install libgtk2.0-dev
    

    安装时出现以下错误

    下列软件包有未满足的依赖关系:  
    libc6-dev : 破坏: libgcc-9-dev (< 9.3.0-5~) 但是 9.2.1-22 正要被安装  
    E: 错误,pkgProblemResolver::Resolve 发生故障,这可能是有软件包被要求保持现状的缘故。
    

    解决方法:
    执行以下命令,过程提示全选同意:

    sudo apt install gcc-9-base
    

    然后再重新安装libgtk2.0-devpkg-config,安装好之后重新编译OpenCV-3.2.0(之前的工具可能失效,需要重新安装,下面的命令里有重新安装)
    即依次执行以下命令:

    sudo apt-get install libgtk2.0-dev pkg-config
    cd ..
    cd opencv-3.2.0/
    cd release/
    sudo apt-get install build-essential
    sudo apt-get install cmake git libgtk2.0 libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
    sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
    cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/ ..
    sudo make install -j7
    
    cd ..
    cd EasyPR/
    ./build.sh
    

    然后再重新编译一下EasyPR即可。

    三、总结

    参考资料:

  • 相关阅读:
    Java应用程序的运行机制,以及JDK,JRE,JVM
    正则表达式练习题
    正则表达式
    转:DOM操作
    jQuery 遍历
    转:把一个对象赋值给另一个对象会指向同一个内存地址
    sql 语句的先后执行顺序
    数据结构时间复杂度进阶篇
    数据结构时间复杂度基础篇
    UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现(转)
  • 原文地址:https://www.cnblogs.com/minuy/p/13775727.html
Copyright © 2020-2023  润新知