探索 Python + HyperLPR 进行车牌识别
概要
HyperLRP是一个开源的、基于深度学习高性能中文车牌识别库,由北京智云视图科技有限公司开发,支持PHP、C/C++、Python语言,Windows/Mac/Linux/Android/IOS 平台。本文将根据官网指引,进行一个车牌识别的入门探索。
特性
- 速度快 720p ,单核 Intel 2.2G CPU (macbook Pro 2015)平均识别时间低于100ms
- 基于端到端的车牌识别无需进行字符分割
- 识别率高,仅仅针对车牌ROI在EasyPR数据集上,0-error达到 95.2%, 1-error识别率达到 97.4% (指在定位成功后的车牌识别率)
- 轻量 总代码量不超1k行
目前可识别的车牌为
- 单行蓝牌
- 单行黄牌
- 新能源车牌
- 白色警用车牌
- 使馆/港澳车牌
- 教练车牌
- 武警车牌
注意
阅读本文前,您可能需要熟悉Python的开发环境,一些基本语法,Jupyter Notebook的使用,会使用git 客户端工具,知道 Tensorflow等等。
工具
- Anaconda for Python 3.x on Win64
- Tensorflow
过程
1、安装Anaconda
进入官网,点击Windows -> Python 3.6 version -> 64-Bit Graphical Installer(631 MB)进行下载;下载完成后打开一直下一步直至安装完成。整个安装过程需要10分钟左右。
Q: 为什么要python3.6呢?
A : 因为在windows下,tensorflow不支持Python 2.7,请各位看官注意。在2.7下用pip安装ttensorflow会一直报找不到相应的模块。
下载界面
2、安装相关的python库
Anaconda已经包含了pip安装器,我们需要进入 C:\Users\您的计算机用户名\Anaconda3\Scripts下运行pip进行安装。
在开始菜单中输入cmd,右键以管理员运行, 执行cd C:\Users\您的计算机用户名\Anaconda3\Scripts,在些输入pip命令安装依赖的模块
pip install pyinstaller -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
pip install Keras
pip install Theano
pip install Numpy
pip install Scipy
pip install opencv-python
pip install scikit-image
pip install pillow
pip install tensorflow
安装过程中可能出现Time out错误如下
raise ReadTimeoutError(self._pool, None, 'Read timed out.')
pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.
不要慌,重新输入一次安装命令。如:pip install pillow
若遇到多次这种情况,您可能需要一架梯子。
3、下载车牌识别库
打开Git CMD,输入下面的指令,将仓库克隆到本地,--depth=1不克隆历史,只取最新的一个版本,对我们使用者来说可以节少大量的时间,因为历史版本对我们没有什么意义。
git clone --depth=1 https://github.com/zeusees/HyperLPR.git
等待克隆完成
Blackice@Blackice-PC MINGW64 /d/Projects
$ git clone --depth=1 https://github.com/zeusees/HyperLPR.git
Cloning into 'HyperLPR'...
remote: Counting objects: 793, done.
remote: Compressing objects: 100% (605/605), done.
remote: Total 793 (delta 170), reused 709 (delta 149), pack-reused 0
Receiving objects: 100% (793/793), 92.86 MiB | 86.00 KiB/s, done.
Resolving deltas: 100% (170/170), done.
Checking out files: 100% (714/714), done.
所有文件如下
整个开源库的文件
我们需要把hyperlpr_py3复制到C:\Users\您的计算机用户名\Anaconda3\Lib下,并改名为hyperlpr,完整路径为C:\Users\您的计算机用户名\Anaconda3\Lib\hyperlpr
路径及文件
然后,我们在桌面\Jupyter\下创建一个LPR的目录,将开源库中的Font和model拷到此目录,创建一个car的目录,放置一张待识别车牌的车辆照片,命名为1.jpg,2.jpg,3.jpg。
1.jpg
2.jpg
3.jpg
4、运行DEMO
整个安装完后,打开 Jupyter Notebook,在Desktop\Jupyter\LRP新建一个 Python3的Notebook,输入如下代码:
from hyperlpr import pipline as pp
import cv2
# 自行修改文件名
image = cv2.imread("./car/1.jpg")
image,res = pp.SimpleRecognizePlate(image)
print(res)
按shift + Enter执行,大约几秒后即可出现结果。
识别结果1
识别结果2
识别结果3
至此,我们成功地使用开源python库进行车牌识别,本次提供的三个样本显示出识别需要质量较高的图像,对于低质量图像或有逆光干扰的时候,会有多个结果供选择,我们可以根据置信度,或提高图像分辨率进行处理与选择。
探索 Python + HyperLPR 进行车牌识别的更多相关文章
- Python+Keras+TensorFlow车牌识别
这个是我使用的车牌识别开源项目的地址:https://github.com/zeusees/HyperLPR Python 依赖 Anaconda for Python 3.x on Win64 Ke ...
- 毕业设计 python opencv实现车牌识别 界面
主要代码参考https://blog.csdn.net/wzh191920/article/details/79589506 GitHub:https://github.com/yinghualuow ...
- 毕业设计 python opencv实现车牌识别 形状定位
主要代码参考https://blog.csdn.net/wzh191920/article/details/79589506 GitHub:https://github.com/yinghualuow ...
- 毕业设计 python opencv实现车牌识别 预处理
主要代码参考https://blog.csdn.net/wzh191920/article/details/79589506 GitHub:https://github.com/yinghualuow ...
- 毕业设计 python opencv实现车牌识别 码云地址
码云地址:https://gitee.com/yinghualuowu/Python_VLPR 删除了冗余代码,可以更加便于运行.其实是为了那些进不去github准备的~
- 毕业设计 python opencv实现车牌识别 矩形矫正
主要代码参考https://blog.csdn.net/wzh191920/article/details/79589506 GitHub:https://github.com/yinghualuow ...
- 毕业设计 python opencv实现车牌识别 颜色判断
主要代码参考https://blog.csdn.net/wzh191920/article/details/79589506 GitHub:https://github.com/yinghualuow ...
- 毕业设计 python opencv实现车牌识别 颜色定位
主要代码参考https://blog.csdn.net/wzh191920/article/details/79589506 GitHub:https://github.com/yinghualuow ...
- 使用Python基于HyperLPR/Mask-RCNN的中文车牌识别
基于HyperLPR的中文车牌识别 Bolg:https://blog.csdn.net/lsy17096535/article/details/78648170 https://www.jiansh ...
随机推荐
- 关于#progma comment 中库文件相对路径问题 (转)
最近做一个验证程序的对话框编程,因为里面要要用到静态链接库,所以就稍微的学习了下静态链接库知识,学习的过程中感觉到了自己所了解的东西实在是少的可怜,更加坚定了自己要更加上进的决心,要把以前所丢掉的都给 ...
- 【Html】Html基本标记
<!doctype html> <html> <head> <!--mata 元信息标记--> <meta charset="utf-8 ...
- php 利用debug_backtrace方法跟踪代码调用
在开发过程中,例如要修改别人开发的代码或调试出问题的代码,需要对代码流程一步步去跟踪,找到出问题的地方进行修改.如果有一个方法可以获取到某段代码是被哪个方法调用,并能一直回溯到最开始调用的地方(包括调 ...
- kali 插上耳机没声音
这几天装kali装的真是心力憔悴,好不容易勉强可以使用了,插上耳机想要放松下,结果没有声音? excusu me? 在经历各种方法之后终于找到了解决方法,亲测可行. 1.先打开终端,输入systemc ...
- Unity相机鼠标基本控制
一.滚轮控制视角缩放 /// <summary> /// 滚轮控制相机视角缩放 /// </summary> public void CameraFOV() { //获取鼠标滚 ...
- Vue中引入静态JS文件(爬坑)
前言(背景介绍) 开发的项目需要与Threejs的3D项目结合在一起,需要静态引入,jquery.js,stats.js,three.js,ThreeBSP.js等静态文件.开发环境是iview-ad ...
- 【网易官方】极客战记(codecombat)攻略-地牢-辐射光环
关卡连接: https://codecombat.163.com/play/level/radiant-aura 骷髅,恐惧还是回避? 简介: 敬请期待! 默认代码 # 捡起发光石,让骷髅怪远离你一会 ...
- c语言getipaddrtable获得ip地址与sendArp获得mac地址以及一些字节序问题记录
https://docs.microsoft.com/zh-cn/windows/win32/api/iphlpapi/nf-iphlpapi-getipaddrtable msdn,有很多c的源码还 ...
- 把jar包部署为linux服务
一直未配置成功,直到放弃后reboot了下,才直到错的不是自己的配置,而是自己不懂 1.在touch /etc/rc.d/init.d/tl_c_cons_service(创建新文件) 2.vi /e ...
- k8s默认存储动态挂载分配配置
k8s默认存储动态挂载分配配置 k8s默认存储动态挂载分配配置 https://blog.csdn.net/BigData_Mining/article/details/96973871