Qt 车牌识别 (EasyPR)
EasyPR
- 下载
- 直接把源码加到.pri文件中
- 安装/直接解压 opencv-3.2.0-vc14.exe
- 使用
- 最终效果
- Qt 车牌识别 (HyperLPR)
开发环境:win10 + Qt5.12.1 + vs2015_x64
下载
EasyPR源码下载链接:https://github.com/liuruoze/EasyPR
笔者下载的v1.6版本 (这个库最后维护是2018年好像)
因为没有训练绿牌,所以无法识别,需要自己训练,它提供了训练函数
如何添加绿牌:https://blog.csdn.net/h593245631/article/details/107185418
直接把源码加到.pri文件中
安装/直接解压 opencv-3.2.0-vc14.exe
下载:https://nchc.dl.sourceforge.net/project/opencvlibrary/opencv-win/3.2.0/opencv-3.2.0-vc14.exe
使用
void EasyPRThread::run()
{setResult(0);switch (threadType()) {case 0://initinit();break;case 1:{QImage image;QString tag;extractFacialFeatures(getFilePath(),image,tag);setImage(image);setTag(tag);}break;case 2:{easypr::SvmTrain svm("tmp/train/svm", "tmp/train/svm.xml");svm.train();}break;case 3:{easypr::AnnTrain ann("tmp/train/ann", "tmp/train/ann.xml");ann.train();}break;case 4:{int sameCount = 0;int errorCount = 0;for(int i=0; i<_filePaths.size(); ++i){QImage image;QString tag;extractFacialFeatures(_filePaths.at(i),image,tag);setImage(image);setTag(tag);QFileInfo fileInfo(_filePaths.at(i));if(fileInfo.completeBaseName() == tag){++sameCount;}else{++errorCount;}}QString str = QString("%1:%2 %3:%4 %5:%6 %7:%8").arg(QStringLiteral("共")).arg(_filePaths.size()).arg(QStringLiteral("正确")).arg(sameCount).arg(QStringLiteral("错误")).arg(errorCount).arg(QStringLiteral("识别率")).arg(sameCount*1.0/_filePaths.size());SCDebug<<str;emit sigTextEdit(str);}break;default:break;}
}
bool EasyPRThread::extractFacialFeatures(const QString &filePath,QImage &image,QString &tag)
{image.load(filePath);int result = 0;// cv::Mat src = imread(filePath.toLocal8Bit().toStdString());// // 切割车牌图片// vector<CPlate> resultVec;// CPlateDetect pd;// pd.setPDLifemode(true);// result = pd.plateDetect(src, resultVec);// size_t num = resultVec.size();// SCDebug<<"result:"<<result<<num;// for (size_t j = 0; j < num; j++) {// CPlate resultMat = resultVec[j];// std::string license = resultMat.getPlateStr();// QString lice1 = QString::fromLocal8Bit(license.c_str());// SCDebug<<"j:"<<lice1;// imshow("plate_detect", resultMat.getPlateMat());// waitKey(0);// }CPlateRecognize pr;//CMER代表文字定位方法,SOBEL和COLOR分别代表边缘和颜色定位方法。可以通过"|"符号结合// pr.setDetectType(PR_DETECT_SOBEL);// pr.setDetectType(PR_DETECT_CMSER);// pr.setDetectType(PR_DETECT_COLOR);// pr.setDetectType(PR_DETECT_CMSER | PR_DETECT_COLOR);pr.setDetectType(PR_DETECT_COLOR | PR_DETECT_SOBEL | PR_DETECT_CMSER);//开启生活模式,这个属性在定位方法为SOBEL时可以发挥作用,能增大搜索范围,提高鲁棒性。pr.setLifemode(true);// //设置EasyPR最多查找多少个车牌。当一副图中有大于n个车牌时,EasyPR最终只会输出可能性最高的n个。pr.setMaxPlates(1);std::vector<CPlate>plateVec;cv::Mat src = imread(filePath.toLocal8Bit().toStdString());pr.setResultShow(false);result = pr.plateRecognize(src,plateVec);SCDebug<<"result:"<<result<<plateVec.size();// pr.getResultShow();QPainter painter(&image);for(int i=0; i<plateVec.size(); ++i){CPlate plate = plateVec.at(i);//plateMat代表车牌图像,rrect代表车牌的可旋转矩形位置,license代表车牌字符串,例如“蓝牌:苏EUK722”。// Mat plateMat = plate.getPlateMat();RotatedRect rrect = plate.getPlatePos();painter.setPen(QPen(Qt::magenta, 2, Qt::DashDotLine));painter.drawRect(rrect.boundingRect().x,rrect.boundingRect().y,rrect.boundingRect().width,rrect.boundingRect().height);std::string license = plate.getPlateStr();QString lice1 = QString::fromLocal8Bit(license.data());lice1 = getLicensePlateType(lice1,tag);qDebug()<<i<<"revStr:"<<lice1;emit sigTextEdit(lice1);}return true;
}
最终效果
测试它源码中自带的 general_test 文件夹中的车牌图片识别率只有:0.47(47%)
Qt 车牌识别 (HyperLPR)
https://blog.csdn.net/u012020854/article/details/111202952
Qt 车牌识别 (EasyPR)相关推荐
- OpenCV学习案例之车牌识别EasyPR
OpenCV学习案例之车牌识别easyPR 起始 github上开源中文车牌识别库比较少: HyperLPR,基于深度学习高性能中文车牌识别库,支持python.c++, 可以在Android,Lin ...
- 开源项目车牌识别EasyPR的使用
开源项目车牌识别EasyPR的使用 1.配置Visual studio+opencv 2.下载源码 https://gitee.com/easypr/EasyPR?hmsr=aladdin1e6 3. ...
- 车牌识别EasyPR(3)——SVM模型判断车牌
本文开始分析车牌定位模块后续步骤的车牌判断模块.车牌判断模块是EasyPR中的基于机器学习模型的一个模块,这个模型就是SVM(支持向量机). 我们已经知道,车牌定位模块的输出是一些候选车牌的图片.但如 ...
- 实战:QT车牌识别系统综合设计
该系统是博主结合许多QT开发项目综合制作,借用了Opencv的开发库来完成的一个项目,具体的可以按照目录来,关于识别方面仅仅提供一个思路,目前还在想如何去优化(准备采用神经网络将数据集拟合,减少时间复 ...
- 车牌识别 easypr 【ubuntu系统配置】
目录 一:easypr在ubuntu中的配置 二:easypr车牌识别 1. 车牌定位 2.车牌判断 3.车牌检测 4.字符分隔 5.字符鉴别 6.字符识别 7.车牌识别 8.测试全部 一:easyp ...
- 车牌识别EasyPR(5)——文字定位
今天我们来介绍车牌定位中的一种新方法--文字定位方法(MSER),包括其主要设计思想与实现.接着我们会介绍一下EasyPR v1.5-beta版本中带来的几项改动. 一.文字定位法 在EasyPR前面 ...
- 车牌识别EasyPR(4)——字符识别MSER
由于字符识别相对于前面的车牌定位而言,显得较为简单.不像在一个复杂和低分辨场景下进行车牌定位,在字符分割和识别的部分时,所需要处理的场景已经较为固定了,因此其处理技术也较为单一. 一.字符分割 英文字 ...
- 车牌识别EasyPR(2)——车牌颜色定位与偏斜扭转
本篇文章介绍EasyPR里新的定位功能:颜色定位与偏斜扭正.让我们先看一下示例图片,这幅图片中的车牌通过颜色的定位法进行定位并从偏斜的视角中扭正为正视角(请看右图的左上角). 图1 新版本的定位效果 ...
- (转载)车牌识别EasyPR--开发详解
更新:基于keras-tensorflow的车牌识别,HyperLPR是一个基于Python的使用深度学习针对对中文车牌识别的实现,与开源的EasyPR相比,它的检测速度和鲁棒性和多场景的适应性都要好 ...
- 【OpenCV+Qt】使用车牌识别系统EasyPR识别车牌号
EasyPR是一个中文的开源车牌识别系统,其车牌识别划分为了两个过程:即车牌检测(Plate Detection)和字符识别(Chars Recognition)两个过程: 车牌检测(Plate De ...
最新文章
- 基于Charlieplexing算法(查理复用算法)的LED矩阵控制设计
- phoneGap+jquery mobile项目经验
- Java 文件复制 Hutool IO使用
- ElementUI中显示是否以及SpringBoot中怎样存储实体类属性和数据库怎样设计字段
- Maximum Subsequence Sum最大子列和问题(c语言实现)
- jzoj3895-数字对【RMQ,GCD,二分答案,单调队列】
- Python 3 学习——函数扩展and迭代器生成器装饰器
- nfsd linux是什么进程,Linux 下的 NFS 系统简介
- CSS 控制元素 上下左右居中
- 添加源代码到你的sdk中
- html5期末考试题答案,HTML5期末考试题型
- 纬地道路纵断面设计教程_纬地道路辅助设计系统教程 (纵断面设计).doc
- WPS使用宏操作——减少重复性操作,提高效率
- 大幅提升CLIP图像分类准确率-Tip-Adapter
- 导出公众号历史文章,批量下载微信公众号数据分析
- 网络工程——HCNA网络技术的简单配置
- B2C电子商务网站的突围——再议什么是B2C网站
- 手机全部零件名称图片_手机“透视”壁纸来了,换上试试
- [rk3188] 在系统中实现伪静默安装
- Fundamentals of Computer Graphics 4th目录
热门文章
- 中文输入纠错任务整理
- linux ppsspp速度,PPSSPP模拟器详细使用技巧
- Win7主题文件themepack不能安装,低级错误!
- 中国人口最多的姓氏排行
- 伍德里奇 第6版 计量经济学导论_伍德里奇《计量经济学导论》第6版课后习题答案...
- 【eoeAndroid社区索引】Android二维码知识汇总
- android 获取微信二维码 DiffDevOAuth.auth
- Android基础入门教程——7.3.3 Android 文件下载(2)
- ddk高级主题和提示
- 因子分析怎么计算权重?