当前位置:   article > 正文

超详细中文车牌识别开源库EasyPR入门实战(win10_VS2019_opencv34)

easypr

中文车牌识别库EasyPR配置全过程及编译问题解决(win10_VS2019_opencv34)

一.开源库介绍

EasyPR是一个中文的开源车牌识别系统,其目标是成为一个简单、高效、准确的车牌识别引擎。相比于其他的车牌识别系统,EasyPR有如下特点:它基于openCV这个开源库。这意味着你可以获取全部源代码,并且移植到java等平台。它能够识别中文。例如车牌为苏EUK722的图片,它可以准确地输出std:string类型的"苏EUK722"的结果。它的识别率较高。图片清晰情况下,车牌检测与字符识别可以达到80%以上的精度。

二.准备工作

EasyPR源码下载

使用git或者直接在github仓库下载压缩包。地址如下:
EasyPR

Opencv下载与编译

在windows下使用opencv库方法主要分为两种:1.从源码使用cmake进行编译,过程比较复杂。常见于使用非VS的idle如用mingw使用opencv;2.直接使用编译好的lib库和和可执行文件dll。本文在VS2019下使用opencv,所以使用编译好的文件以求便捷。具体过程如下:

首先,进入opencv官方的库分发地址中,下载opencv3.4的最新windows安装文件。下载地址
在这里插入图片描述
将下载好的压缩包解压到合适的地方,得到下列文件,下文将介绍如何使用:
在这里插入图片描述

软件环境配置

解压好EasyPR库文件,文件目录一目了然,打开程序的sln文件:
在这里插入图片描述)
过程中如果出现新旧VS版本的提示问题,点确定即可:
在这里插入图片描述)
可以看到有两个子模块:
在这里插入图片描述
首先右键单击demo,选择其属性,选择release_64位进行配置,选择合适的sdk版本,不然会报很多缺少头文件的错误。
在这里插入图片描述

接下来,分别将头文件目录,库文件目录和链接添加到VS工程相应的属性设置中。

将opencv的头文件和库本身的本地头文件添加到包含目录中,如下:
在这里插入图片描述
库目录选择VS2019对应的vc15里的lib文件夹:\opencv\build\x64\vc15\lib,如下:
在这里插入图片描述
将系统里的原有的链接器修改为自己对应的版本,比如本文的版本为:
在这里插入图片描述)
在这里插入图片描述
对libeasypr做同样的配置,这里不再赘述。注意因为libeasypr生成的是lib文件,所以不需要配置链接器。
当运行未出现以下错误时,说明基本配置成功。
在这里插入图片描述

三.编译中的几个问题

1.明明配置完成还是找不到opencv.hpp

本文配置试下64位的release下,查看是否在其他运行,如下:
在这里插入图片描述

2.出现ANN_MLP有关的问题

这个是由于opencv版本的问题,作者已经在主页中进行说明,具体解决方法为:

对于Opencv3.2或以上版本,如果碰到编译问题,例如“ANN_MLP”相关的错误,尝试将config.h中将#define CV_VERSION_THREE_ZERO改为#define CV_VERSION_THREE_TWO试试.

在这里插入图片描述

3.检测到“RuntimeLibrary”的不匹配项: 值“MD_DynamicRelease”不匹配值“MT_StaticRelease”

在这里插入图片描述
这个为生成lib对应的是debug而不是release,解决方法:libeasypr工程上右键-》属性-》c/c+±》代码生成-》运行库改成(release为MT,debug为MTD)即可解决:
在这里插入图片描述

4.找不到opencv_world3413.dll

使用opencv常见的错误,具体原理大致为程序链接了该dll库,但是自己可用的地址中找不到。所以有两种解决方式:1.将该\opencv\build\x64\vc15\bin文件夹添加到系统环境变量。2.本文推荐,将\opencv\build\x64\vc15\bin下的opencv_world3413.dll直接复制到本工程和exe的同目录,如:
在这里插入图片描述

四.简单的运行结果

进行编译运行:
在这里插入图片描述
当出现此界面时,恭喜你基本已经编译完成,但是当选择1-1的定位测试时,程序可能没有反应,这是因为两个原因:1.测试图片的相对路径是在linux下的路径方式,虽然说相对路劲等价,但是直接使用总是会有点问题;2.查看demo主程序中写的路径,demo文件下并没有此文件夹,这个resources文件在系统目录下,而且训练好的模型model的文件也在EasyPR下,所以我们使用命令行的方式进行EasyPR的识别功能的简单测试,训练功能以后再尝试。
下面是官方提供的使用示例:官方使用说明

#利用提供的SVM和ANN模型来识别一张图片里面的所有车牌
$ ./demo recognize -p resources/image/plate_recognize.jpg --svm model/svm.xml --ann model/ann.xml
#或者更简单一些(注意模型路径)
$ ./demo recognize -p resources/image/plate_recognize.jpg
  • 1
  • 2
  • 3
  • 4

将model文件夹和resource文件夹放入demo.exe的同名文件夹下:
在这里插入图片描述
在地址栏输入cmd并回车,或者使用任何其他的命令行在此文件下打开:
在这里插入图片描述
因为windows下的地址是反斜杠而且可执行文件不同,所以略微有一些区别:

$ .\demo.exe recognize -p resources\image\plate_recognize.jpg
  • 1

在这里插入图片描述
识别成功:
在这里插入图片描述
其他相应的功能,可以输入.\demo.exe -h进行查看。
在网上随便找一张车牌图片,改名为test.jpg放在demo.exe同目录下:
在这里插入图片描述

数字识别成功,但是汉字失败,说明还有不少改进的空间:在这里插入图片描述
同时,由于已经将model和resources文件夹放好,所以批量测试是可以使用的:
在命令行中选择2.批量测试—1.general_test,可以执行。
在这里插入图片描述

五.后续工作

因为时间和篇幅的问题,本文暂时结束于此,后续有机会将介绍如何在自己的C++程序中调用、集成该库以及自己数据的训练过程。
希望本文对大家有所帮助!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/459479
推荐阅读
相关标签
  

闽ICP备14008679号