[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-9768":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":37,"readmeContent":38,"aiSummary":39,"trendingCount":16,"starSnapshotCount":16,"syncStatus":40,"lastSyncTime":41,"discoverSource":42},9768,"EasyPR","liuruoze\u002FEasyPR","liuruoze","(CGCSTCD'2017) An easy, flexible, and accurate plate recognition project for Chinese licenses in unconstrained situations.  CGCSTCD = China Graduate Contest on Smart-city Technology and Creative Design","",null,"C++",6427,2476,517,78,0,1,5,41,"Apache License 2.0",false,"master",true,[25,26,27,28,29,30,31,32,33,34,35,36],"artificial-intelligence","artificial-neural-networks","chinese-characters","computer-vision","datasets","machine-learning","opencv","opencv3","plate-recognition","supervised-learning","support-vector-machines","unconstrained-situation","2026-06-12 02:02:12","# EasyPR\n\nEasyPR是一个开源的中文车牌识别系统，其目标是成为一个简单、高效、准确的非限制场景(unconstrained situation)下的车牌识别库。\n\n相比于其他的车牌识别系统，EasyPR有如下特点：\n\n* 它基于openCV这个开源库。这意味着你可以获取全部源代码，并且移植到opencv支持的所有平台。\n* 它能够识别中文。例如车牌为苏EUK722的图片，它可以准确地输出std:string类型的\"苏EUK722\"的结果。\n* 它的识别率较高。图片清晰情况下，车牌检测与字符识别可以达到80%以上的精度。\n\n### 更新\n\n本次更新版本是1.6正式版本，主要有以下几点更新：\n\n1. 修正了多项readme的文本提示。\n\n2. 增加了C#调用EasyPR的一个项目的链接，感谢 @zhang-can 同学。\n\n\n**注意**\n\n1. 对于Opencv3.2或以上版本，如果碰到编译问题，例如“ANN_MLP”相关的错误，尝试将config.h中将#define CV_VERSION_THREE_ZERO改为#define CV_VERSION_THREE_TWO试试.\n\n2. linux系统推荐使用Opencv3.2以上版本。3.2以下的版本例如3.0和3.1在识别时可能会出现车牌识别结果为空的情况。稳妥起见，建议都升级到最新的3.2版本。Windows版本没有这个问题。\n\n## 待做的工作\n- [ ] 完成一个CNN框架\n- [ ] 替换ANN为CNN\n- [ ] 增加新能源车的识别（待定）\n- [ ] 增加两行车牌的识别（待定）\n\n### 跨平台\n\n目前除了windows平台以外，还有以下其他平台的EasyPR版本。一些平台的版本可能会暂时落后于主平台。\n\n现在有一个无需配置opencv的1.5版本的[懒人版](http:\u002F\u002Fgit.oschina.net\u002Feasypr\u002FEasyPR\u002Fattach_files)。仅仅支持vs2013，也只能在debug和x86下运行，其他情况的话还是得配置opencv。感谢范文捷同学的帮助。页面里的两个文件都要下载，下载后用[7zip](http:\u002F\u002Fwww.7-zip.org\u002F)解压。\n\n|版本 | 开发者 | 版本 | 地址 \n|------|-------|-------|-------\n| C# |  zhang-can  |  1.5  |  [zhang-can\u002FEasyPR-DLL-CSharp](https:\u002F\u002Fgithub.com\u002Fzhang-can\u002FEasyPR-DLL-CSharp)\n| android |  goldriver  |  1.4  |  [linuxxx\u002FEasyPR_Android](https:\u002F\u002Fgithub.com\u002Flinuxxx\u002FEasyPR_Android)\n| linux | Micooz  |  1.6  |  已跟EasyPR整合\n| ios | zhoushiwei |  1.3  |  [zhoushiwei\u002FEasyPR-iOS](https:\u002F\u002Fgithub.com\u002Fzhoushiwei\u002FEasyPR-iOS)\n| mac | zhoushiwei,Micooz |  1.6  | 已跟EasyPR整合\n| java | fan-wenjie |  1.2  | [fan-wenjie\u002FEasyPR-Java](https:\u002F\u002Fgithub.com\u002Ffan-wenjie\u002FEasyPR-Java)\n| 懒人版 | fan-wenjie |  1.5  | [git\u002Foschina](http:\u002F\u002Fgit.oschina.net\u002Feasypr\u002FEasyPR\u002Fattach_files)\n\n### 兼容性\n\n当前EasyPR是基于opencv3.0版本开发的，3.0及以上的版本应该可以兼容，以前的版本可能会存在不兼容的现象。\n\n### 例子\n\n假设我们有如下的原始图片，需要识别出中间的车牌字符与颜色：\n\n![EasyPR 原始图片](resources\u002Fdoc\u002Fres\u002Fplate_locate.jpg)\n\n经过EasyPR的第一步处理车牌检测（PlateDetect）以后，我们获得了原始图片中仅包含车牌的图块：\n\n![EasyPR 车牌](resources\u002Fdoc\u002Fres\u002Fblue_plate.jpg)\n\n接着，我们对图块进行OCR过程，在EasyPR中，叫做字符识别（CharsRecognize）。我们得到了一个包含车牌颜色与字符的字符串：\n\n“蓝牌：苏EUK722”\n\n### 示例\n\nEasyPR的调用非常简单，下面是一段示例代码:\n```c++\n\tCPlateRecognize pr;\n\tpr.setResultShow(false);\n\tpr.setDetectType(PR_DETECT_CMSER);\n     \n\tvector\u003CCPlate> plateVec;\n\tMat src = imread(filepath);\n\tint result = pr.plateRecognize(src, plateVec);\n```\n\n我们首先创建一个CPlateRecognize的对象pr，接着设置pr的属性。\n\n```c++\n\tpr.setResultShow(false);\n```\n\n这句话设置EasyPR是否打开结果展示窗口，如下图。设置为true就是打开，否则就是关闭。在需要观看定位结果时，建议打开，快速运行时关闭。\n\n![EasyPR 输出窗口](resources\u002Fdoc\u002Fres\u002Fwindow.png)\n\n```c++\n\tpr.setDetectType(PR_DETECT_CMSER);\n```\n\n这句话设置EasyPR采用的车牌定位算法。CMER代表文字定位方法，SOBEL和COLOR分别代表边缘和颜色定位方法。可以通过\"|\"符号结合。\n\n```c++\n\tpr.setDetectType(PR_DETECT_COLOR | PR_DETECT_SOBEL);\n```\n\n除此之外，还可以有一些其他的属性值设置：\n\n```c++\n\tpr.setLifemode(true);\n```\n\n这句话设置开启生活模式，这个属性在定位方法为SOBEL时可以发挥作用，能增大搜索范围，提高鲁棒性。\n\n```c++\n\tpr.setMaxPlates(4);\n```\n\n这句话设置EasyPR最多查找多少个车牌。当一副图中有大于n个车牌时，EasyPR最终只会输出可能性最高的n个。\n\n下面来看pr的方法。plateRecognize()这个方法有两个参数，第一个代表输入图像，第二个代表输出的车牌CPlate集合。\n\n```c++\n\tvector\u003CCPlate> plateVec;\n\tMat src = imread(filepath);\n\tint result = pr.plateRecognize(src, plateVec);\n```\n\n当返回结果result为0时，代表识别成功，否则失败。\n\nCPlate类包含了车牌的各种信息，其中重要的如下：\n\n```c++\n\tCPlate plate = plateVec.at(i);\n\tMat plateMat = plate.getPlateMat();\n\tRotatedRect rrect = plate.getPlatePos();\n\tstring license = plate.getPlateStr();\n```\n\nplateMat代表车牌图像，rrect代表车牌的可旋转矩形位置，license代表车牌字符串，例如“蓝牌：苏EUK722”。\n\n这里说下如何去阅读如下图的识别结果。\n\n![EasyPR DetectResults](resources\u002Fdoc\u002Fres\u002Fone_image_detect.jpg)\n\n第1行代表的是图片的文件名。\n\n第2行代表GroundTruth车牌，用后缀（g）表示。第3行代表EasyPR检测车牌，用后缀（d）表示。两者形成一个配对，第4行代表两者的字符差距。\n\n下面同上。本图片中有3个车牌，所有共有三个配对。最后的Recall等指标代表的是整幅图片的定位评价，考虑了三个配对的结果。\n\n有时检测车牌的部分会用“无车牌”与“No string”替代。“无车牌”代表“定位不成功”，“No string”代表“定位成功但字符分割失败”。\n\n### 版权\n\nEasyPR的源代码与训练数据遵循Apache v2.0协议开源。\n\nEasyPR的resources\u002Fimage\u002Fgeneral_test文件夹下的图片数据遵循[GDSL协议](image\u002FGDSL.txt)（通用数据共享协议）进行开放。\n\n请确保在使用前了解以上协议的内容。\n\n### 目录结构\n\n以下表格是本工程中所有目录的解释:\n\n|目录 | 解释\n|------|----------\n| src |  所有源文件\n| include | 所有头文件\n| test | 测试程序\n| model | 机器学习的模型\n| resources\u002Ftext | 中文字符映射表\n| resources\u002Ftrain | 训练数据与说明\n| resources\u002Fimage | 测试用的图片\n| resources\u002Fdoc | 相关文档\n| tmp | 训练数据读取目录，需要自建\n\n以下表格是resources\u002Fimage目录中子目录的解释:\n\n|目录 | 解释\n|------|----------\n| general_test | GDTS（通用数据测试集）\n| native_test | NDTS（本地数据测试集）\n| tmp | Debug模式下EasyPR输出中间图片的目录，需要自建\n\n以下表格是src目录中子目录的解释:\n\n|目录 | 解释\n|------|----------\n| core |  核心功能\n| preprocess | SVM预处理\n| train | 训练目录，存放模型训练的代码\n| util | 辅助功能\n\n以下表格是src目录下一些核心文件的解释与关系:\n\n|文件 | 解释\n|------|----------\n| plate_locate |  车牌定位\n| plate_judge | 车牌判断\n| plate_detect | 车牌检测，是车牌定位与车牌判断功能的组合\n| chars_segment | 字符分割\n| chars_identify | 字符鉴别\n| chars_recognise | 字符识别，是字符分割与字符鉴别功能的组合\n| plate_recognize | 车牌识别，是车牌检测与字符识别的共有子类\n| feature | 特征提取回调函数\n| plate | 车牌抽象\n| core_func.h | 共有的一些函数\n\n以下表格是test目录下文件的解释:\n\n|文件 | 解释\n|------|----------\n| main.cpp | 主命令行窗口\n| accuracy.hpp | 批量测试\n| chars.hpp | 字符识别相关\n| plate.hpp | 车牌识别相关\n\n以下表格是train目录下文件的解释:\n\n|文件 | 解释\n|------|----------\n| ann_train.cpp | 训练二值化字符\n| annCh_train.hpp | 训练中文灰度字符\n| svm_train.hpp | 训练车牌判断\n| create_data.hpp | 生成合成数据\n\n### 使用\n\n请参考[这里](Usage.md)\n\n### 获取帮助\n\n详细的开发与教程请见[介绍与开发教程](http:\u002F\u002Fwww.cnblogs.com\u002Fsubconscious\u002Fp\u002F3979988.html)。\n\n如果你在使用过程中遇到任何问题，请在[这里](https:\u002F\u002Fgithub.com\u002Fliuruoze\u002FEasyPR\u002Fissues)告诉我们。\n\nEasyPR讨论QQ群号是：一群：366392603，二群：583022188，三群：637614031，四群：548362608，加前请注明EasyPR学习讨论。\n\n### Contributors\n\n* liuruoze：1.0-1.2，1.5版作者\n\n* 海豚嘎嘎(车主之家)：1.3版算法贡献者，提升了车牌定位与字符识别的准确率\n\n* Micooz：1.3-1.4版架构重构，linux与mac支持，opencv3.0支持，utf-8编码转换\n\n* jsxyhelu：deface版本一\n\n* zhoushiwei：deface版本二\n\n* ahccom：新的plateLocate函数\n\n* 阿水：1.3版整合，数据标注等工作\n\n* fan-wenjie：1.5版opencv整合版提供者\n\n* Free：1.6版数据提供者\n\n### 鸣谢\n\ntaotao1233，邱锦山，唐大侠，jsxyhelu，如果有一天(zhoushiwei)，学习奋斗，袁承志，圣城小石匠，goldriver，Micooz，梦里时光，Rain Wang，任薛纪，ahccom，星夜落尘，海豚嘎嘎(车主之家)，刘超，Free大神，以及所有对EasyPR贡献数据的热心同学。","EasyPR是一个开源的中文车牌识别系统，专为非限制场景下的高精度车牌识别设计。它基于OpenCV库开发，支持跨平台移植，并能准确识别包含中文字符的车牌，如“苏EUK722”。该项目采用机器学习方法进行车牌检测与字符识别，在图片清晰的情况下能达到80%以上的识别率。此外，EasyPR提供多种配置选项以适应不同需求，比如调整车牌定位算法类型或设置最大识别车牌数量等。此项目适用于需要高效、灵活且精准的中文车牌识别的应用场景，如智能交通管理、停车场管理系统及安防监控等领域。",2,"2026-06-11 03:24:40","top_topic"]