【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-dev和pkg-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-dev和pkg-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即可。
三、总结
参考资料:
- cmake https://blog.csdn.net/alw2009/article/details/85345715
- OpenCV https://www.cnblogs.com/wycBlog/p/7217498.html
- pkg-config https://www.bilibili.com/read/cv5651011
- glib-2.0>=2.16错误 https://blog.csdn.net/alading2009/article/details/20039281
- 没有头文件错误 https://blog.csdn.net/renweiyi1487/article/details/104160879
- cv2.cpp编译错误 https://blog.csdn.net/qq_44357371/article/details/105966714
- config.h编译错误 https://github.com/liuruoze/EasyPR
- 测试安装出错 https://www.cnblogs.com/awakenedy/articles/13446982.html
【EasyPR】Linux安装使用EasyPR开源车牌识别系统的更多相关文章
- EasyPR--中文开源车牌识别系统 开发详解(1)
在上篇文档中作者已经简单的介绍了EasyPR,现在在本文档中详细的介绍EasyPR的开发过程. 正如淘宝诞生于一个购买来的LAMP系统,EasyPR也有它诞生的原型,起源于CSDN的taotao123 ...
- EasyPR--一个开源的中文车牌识别系统
我正在做一个开源的中文车牌识别系统,Git地址为:https://github.com/liuruoze/EasyPR. 我给它取的名字为EasyPR,也就是Easy to do Plate Reco ...
- 基于opencv的车牌识别系统
前言 学习了很长一段时间了,需要沉淀下,而最好的办法就是做一个东西来应用学习的东西,同时也是一个学习的过程. 概述 OpenCV的全称是:Open Source Computer Vision ...
- 基于百度智能云api下的车牌识别系统
车牌识别在高速公路中有着广泛的应用,比如我们常见的电子收费(ETC)系统和交通违章车辆的检测,除此之外像小区或地下车库门禁也会用到,基本上凡是需要对车辆进行身份检测的地方都会用到. 简介 车牌识别系统 ...
- 智能停车场车牌识别系统【python】
百度AI:https://ai.baidu.com 申请App_id 代码重点:pip install baidu_api from aip import AipOcr import os # 百 ...
- 模式识别之车牌识别---一个开源车牌识别项目easypr
http://doc.okbase.net/subconscious/archive/105312.html https://github.com/liuruoze http://www.cnblog ...
- Linux 安装Anaconda/Miniconda以后无法识别conda命令
注意:遇到无法识别conda命令时,可以先用步骤3试一下重启环境变量后conda命令是否能够识别 1. 修改环境变量 $ vim ~/.bashrc 2. 在最后添加: $ export PATH=~ ...
- Linux安装Redis、后台运行、系统自启动
Redis是用C语言编写的开源免费的高性能的分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库. 安装 1)从官网http://download.redis.io/releases/下载re ...
- Kali Linux 安装教程-转
rootoorotor昨天折腾了 Kali Linux 1.0,把大概的配置过程记录下来,希望对想接触或使用Kali Linux的同学有所帮助. 请注意: 1.本文为面向新手的教程,没技术含量,没 ...
- 车牌识别LPR(三)-- LPR系统整体结构
第三篇:系统的整体架构 LPR系统大体上可由图像采集系统,图像处理系统,数据库管理系统三个子系统组成.它综合了通讯.信息.控制.传感.计算机等各种先进技术,构成一个智能电子系统. 图像采集系统:图像采 ...
随机推荐
- 微服务实战系列(十一)-微服务之自定义脚手架-copy
微服务实战系列(十一)-微服务之自定义脚手架 1. 场景描述 (1)随着微服务越来越常见,一个大的项目会被拆分成多个小的微服务,jar包以及jar之间的版本冲突问题,变得越来越常见,如何保持整体微 ...
- Spring Security 基于JWT的单点登陆(SSO)开发及原理解析
JDK1.8Spring boot 2.xSpring Security 5.x 单点登录(Single Sign On),简称为SSO,是目前比较流行的企业业务整合的解决方案之一. SSO的定义是在 ...
- C# Caching---Cache 缓存
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 usin ...
- 计算困难假设(Computational hardness assumption)
以下内容翻译自:维基 介绍 在计算复杂性理论中,计算困难假设是一个特定问题无法得到有效解决的假设(有效通常指"在多项式时间内").目前还不知道如何证明其困难性.同时,我们可以将一个 ...
- 2025年这些实用的C#/.NET知识点你都知道吗?
前言 在这个快速发展的技术世界中,时常会有一些重要的知识点.信息或细节被忽略或遗漏.<C#/.NET/.NET Core拾遗补漏>专栏我们将探讨一些可能被忽略或遗漏的重要知识点.信息或细节 ...
- rbd常用的配置参数
本文分享自天翼云开发者社区<rbd常用的配置参数>,作者:l****n rbd的基本介绍 rbd的架构如下图所示: rbd采用CRUSH算法实现数据的随机分布.CRUSH算法,即Contr ...
- 浅谈Redis的三种集群策略及应用场景
本文分享自天翼云开发者社区<浅谈Redis的三种集群策略及应用场景>,作者:段林 Redis提供了三种集群策略: 1.主从模式:这种模式⽐较简单,主库可以读写,并且会和从库进⾏数据同步,这 ...
- redis 过期监听配置
package org.jeecg.config; import java.lang.reflect.Method; import java.time.Duration; import java.ut ...
- Binomial Sum 学习笔记
- 李飞飞的50美金比肩DeepSeek把CEO忽悠瘸了,倒霉的却是程序员
关注公众号回复1 获取一线.总监.高管<管理秘籍> 书接上文:DeepSeek怎么突然就比肩GPT了? 如前所述,应用层AI开发压根不会去刻意关注大模型底层实现,多数时候也关注不了. 但我 ...