树莓派 + OpenALPR 实现车牌识别
Waao_426® 发布于2019-11-02
最下面有我这一路下来,所遇到的一些坑。
OpenALPR 简介
OpenALPR 是一个使用 C++ 编写的开源自动牌照识别库。
这个库能分析图像和视频流以识别车牌。
这个库,需要什么东西?
- 需要一些必要的软件包;
- 需要Tesseract OCR 软件依赖;
- 需要OpenCV 软件依赖。(是的,我们还需要安装OpenCV)
开始
步骤一:
先更新一下我们树莓派系统的软件包:
sudo apt-get update
sudo apt-get upgrade
然后开始安装一些软件:
apt-get install autoconf automake libtool
apt-get install libleptonica-dev
apt-get install libicu-dev libpango1.0-dev libcairo2-dev
apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
apt-get install python-dev python-numpy libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
apt-get install virtualenvwrapper
apt-get install liblog4cplus-dev
apt-get install libcurl4-openssl-dev
↑ 嫌多?嫌麻烦?
或者直接使用下面这段来个痛快的:
apt-get install autoconf automake libtool libleptonica-dev libicu-dev libpango1.0-dev libcairo2-dev cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev python-dev python-numpy libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev virtualenvwrapper liblog4cplus-dev libcurl4-openssl-dev
- 1
此处有第一个坑
步骤二:构建依赖
(1)安装Tesseract OCR
为了安装 Tesseract OCR,我们需要先安装 Leptonica。
Leptonica 是一个开源的图像处理和图像分析库,主要包括的操作有:位图操作、仿射变换、形态学操作、连通区域填充、图像变换及像素掩模、融合、增强、算术运算等操作。
为了编译Leptonica,我们需要安装这些依赖包:
apt-get install libjpeg-dev libtiff5-dev libpng12-dev gcc make
- 1
然后下载包:
cd /usr/src
wget http://www.leptonica.org/source/leptonica-1.71.tar.gz
tar xf leptonica-1.71.tar.gz
- 1
- 2
- 3
编译,并执行安装:
/usr/src/leptonica-1.71
./configure
make
make install
- 1
- 2
- 3
- 4
Tesseract,一款由HP实验室开发由Google维护的开源OCR(Optical Character Recognition , 光学字符识别)引擎,与Microsoft Office Document Imaging(MODI)相比,我们可以不断的训练的库,使图像转换文本的能力不断增强;如果团队深度需要,还可以以它为模板,开发出符合自身需求的OCR引擎。
为了安装 Tesseract OCR,我们需要如下的软件包:
apt-get install ca-certificates git
apt-get install autoconf automake libtool
apt-get install autoconf-archive
apt-get install pkg-config
- 1
- 2
- 3
- 4
如果想安装训练工具,我们还需要:
apt-get install libicu-dev
apt-get install libpango1.0-dev
apt-get install libcairo2-dev
- 1
- 2
- 3
从 GIT 克隆代码:
cd /usr/src
git clone https://github.com/tesseract-ocr/tesseract.git
- 1
- 2
此处有第二个坑
查看可以使用的 tag 号:
cd /usr/src/tesseract
git tag
- 1
- 2
签出我们所需要的版本:
git checkout 3.04.01
- 1
使用下面的命令安装:
cd /usr/src/tesseract
./autogen.sh
./configure --enable-debug
make
make install
我们便能获取到相应的版本:
root@openalpr-tst01:/usr/src/tesseract# tesseract -v
tesseract 3.04.01
leptonica-1.71
libjpeg 6b : libpng 1.2.50 : libtiff 4.0.3 : zlib 1.2.8
(2)安装OpenCV
OpenCV 的全称是 Open Source Computer Vision Library,是一个跨平台的计算机视觉库。OpenCV 是由英特尔公司发起并参与开发,以 BSD 许可证授权发行,可以在商业和研究领域中免费使用。 OpenCV 可用于开发实时的图像处理、计算机视觉以及模式识别程序。该程序库也可以使用英特尔公司的 IPP 进行加速处理。
OpenCV 的安装同样有很多坑。。。
在 Raspberry Pi 上编译 OpenCV 需要大量的内存,因此我们可以选择创造出更多的交换空间:
fallocate --length 2GiB /root/2G.swap
chmod 0600 /root/2G.swap
mkswap /root/2G.swap
swapon /root/2G.swap
- 1
- 2
- 3
- 4
可以使用free -m
查看内存使用情况
此处关于OpenCV 的安装请参考我的另一篇博客:
【手把手教学—超简单】树莓派安装OpenCV 3
步骤三:安装OpenALPR
OpenALPR 的安装必须要在OpenCV 安装完成之后,否则不能完成
- 下载代码:
cd /usr/src
git clone https://github.com/openalpr/openalpr.git
- 1
- 2
- 构建:
cd openalpr/src
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_INSTALL_SYSCONFDIR:PATH=/etc ..
make
make install
- 1
- 2
- 3
- 4
- 5
- 6
若中途出错,可能需要如下软件包:
apt-get install cmake
apt-get install liblog4cplus-dev libcurl3-dev
sudo apt-get install beanstalkd
apt-get install openjdk-7-jdk
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64/
- 1
- 2
- 3
- 4
- 5
若在任何步骤中遇到任何类型的缺失库错误,请运行 ldconfig
命令。
(1)下载图片到本地并重命名为lp.jpg
:
wget http://plates.openalpr.com/h786poj.jpg -O lp.jpg
alpr lp.jpg
- 1
- 2
(2)进行车牌识别:
alpr lp.jpg
- 1
填坑
一、某些软件因缺乏环境而无法安装
上述第一个坑处:有的软件是需要其他某些软件作为环境基础的,又或者需要某些低级软件作为基础(可是你却安装了高版本的)。这个时候,我们要根据错误信息,不断去安装其所需要的软件(版本号有时需要指定)。
例如A 软件因为缺乏B 软件而无法安装,B 软件又需要C 软件…我安装过程中甚至嵌套了六层依赖关系,不要嫌麻烦,环境一点一点去配置,最后就可以全部安装完成。
二、网络环境不佳,下载中断
我们可以把http
换成git
,这样成功率会高一点:
例如:
git clone https://github.com/tesseract-ocr/tesseract.git
- 1
换成:
git clone git://github.com/tesseract-ocr/tesseract.git
- 1