一. 简介
EasyPR是一个中文的开源车牌检测+识别系统,其目标是成为一个简单、高效、准确的车牌识别引擎.相比于其他的车牌识别系统EasyPR有如下特点:
- 它基于openCV开源库, 这意味着你可以获取全部源代码,并且移植到java等平台.
- 它能够识别中文.
- 识别率比较高,图片清晰的情况下,车牌检测和字符识别可以达到80%以上的精度.
二. 项目地址
https://github.com/liuruoze/EasyPR
三. 安装编译环境
[pzs@pzs-server:EasyPR]$ cat /etc/os-release # 系统环境
NAME="Ubuntu Kylin"
VERSION="16.04.5 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu Kylin 16.04.5 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial
[pzs@pzs-server:EasyPR]$ cmake --version # cmake版本
cmake version 3.12.3
CMake suite maintained and supported by Kitware (kitware.com/cmake).
[pzs@pzs-server:EasyPR]$ pkg-config --modversion opencv # opencv版本
3.2.0
[pzs@pzs-server:EasyPR]$ pkg-config --libs opencv # opencv安装位置
-L/usr/local/lib -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann -lopencv_core
[pzs@pzs-server:EasyPR]$
四. 编译和使用
-
克隆项目到EasyPR/
-
进入EasyPR/ , 打开CMakeList.txt文件,修改opencv安装地址
(我的opencv安装地址为/usr/local/lib)接着打开EasyPR/include/easypr/config.h
#define CV_VERSION_THREE_TWO #第四行修改CV_VERSION_THREE_ZERO 为 CV_VERSION_THREE_TWO。 README.md中有说明
-
./build.sh # 运行作者提供的编译脚本,编译后在根目录生成demo文件
这里需要注意的是,如果你用了anaconda,而且在anaconda中安装了opencv,需要在./bashrc中注释掉anaconda环境,否则编译会报错
之前我就是没注释掉anaconda环境,而且anaconda安装了opencv3.4,导致使用的库不对,编译报错. -
运行demo
./demo recognize -p 189.png
车牌原图:
实现原理和步骤
-
车牌检测
EasyPR的车牌检测是使用SVM来做的, 先使用图像处理的方式获取到可能为车牌的区域, 然后使用训练好的SVM来对这些区域进行甄别.
替代方案 : 这一步现在可以用yolo等更为优秀的检测算法来代替. -
字符识别
这个步骤的主要目的就是从上一个车牌检测步骤中获取到车牌图像,进行光学字符识别(OCR)这个过程.使用的是ANN(人工神经网络)的方式.
代替方案: 作者在使用ANN进行字符检测之前还对车牌中的文字进行了分割, 如今可以使用crnn进行车牌字符识别, 这样还省掉了字符分割这以步骤. -
EasyPR 流程图