【OpenCV+Qt】使用车牌识别系统EasyPR识别车牌号
EasyPR是一个中文的开源车牌识别系统,其车牌识别划分为了两个过程:即车牌检测(Plate Detection)和字符识别(Chars Recognition)两个过程:
车牌检测(Plate Detection):对一个包含车牌的图像进行分析,最终截取出只包含车牌的一个图块;
字符识别(Chars Recognition):从上一个车牌检测步骤中获取到的车牌图像,进行光学字符识别(OCR)这个过程
效果:
如果还没有搭环境,可参考
Ubuntu+Qt下配置车牌识别系统EasyPR1.6环境_logani的博客-CSDN博客
1.在线程中循环捕获视频帧,发送到窗口进行显示
2.CPlateRecognize进行初始化
识别车牌和颜色,最多可同时识别4个
3.从帧图片中获取车牌信息CPlate存入容器中
如果为0,就是获取到
4.获取容器第一个车牌转成Mat进行显示
第一次转换是将二值化、灰度化后的单通道转成三通道,
第二次转换才是将Mat的BGR转换成RGB
5.获取车牌的文字信息,转换成QString到linneEdit进行显示
源码
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);pvideothread=new videothread("carinput.mp4");connect(pvideothread,SIGNAL(sendFrame(Mat)),this,SLOT(receiveFrame(Mat)),Qt::BlockingQueuedConnection);//接收每一帧Mat//初始化pr.setDetectType(PR_DETECT_CMSER|PR_DETECT_COLOR);//识别车牌和颜色pr.setMaxPlates(4);pr.setResultShow(false);}Widget::~Widget()
{delete ui;
}void Widget::receiveFrame(Mat frame)
{this->frame=frame.clone();//克隆一个做显示和检测车牌cvtColor(this->frame, this->frame, CV_BGR2RGB);this->img1 = QImage(this->frame.data,this->frame.cols,this->frame.rows,QImage::Format_RGB888);this->img1 = this->img1.scaled(ui->label_2->width(),ui->label_2->height());update();
}void Widget::on_pushButton_clicked()//播放
{pvideothread->start();}void Widget::on_pushButton_2_clicked()
{Mat carNum;int res=pr.plateRecognize(this->frame,plateVec);if(res==0){plate=plateVec.at(0);//获取CPlateplateMat=plate.getPlateMat();//转换成Mat//第一次转换是将二值化、灰度化后的单通道转成三通道cvtColor(plateMat, carNum, CV_BGR2RGB);//第二次转换才是将Mat的BGR转换成RGBcvtColor(carNum, carNum, CV_BGR2RGB);QImage img(carNum.data,carNum.cols,carNum.rows,QImage::Format_RGB888);ui->label->setPixmap(QPixmap::fromImage(img));ui->label->setScaledContents(true);//铺满控件String str=plateVec[0].getPlateStr();ui->lineEdit->clear();ui->lineEdit->setText(QString(str.c_str()));}plateVec.clear();//清空容器}
void Widget::paintEvent(QPaintEvent *e)
{ui->label_2->setPixmap(QPixmap::fromImage(this->img1));
}
头文件
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <easypr.h>
#include "videothread.h"
using namespace easypr;
namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = nullptr);~Widget();void paintEvent(QPaintEvent *e);
public slots:void receiveFrame(Mat frame);
private slots:void on_pushButton_clicked();void on_pushButton_2_clicked();private:Ui::Widget *ui;Mat frame;CPlateRecognize pr;vector<CPlate> plateVec;CPlate plate;Mat plateMat;videothread *pvideothread;QImage img1;
};#endif // WIDGET_H
感谢观看!!!!
以上就是全部内容,如果对您有帮助,欢迎点赞评论,或者发现有哪里写错的,欢迎指正!
【OpenCV+Qt】使用车牌识别系统EasyPR识别车牌号相关推荐
- Python OpenCV Tesseract实现车牌的检测与识别
python+opencv+TESSERT-OCR实现车牌的检测与识别_啥都不会的小王的博客-CSDN博客python+opencv+TESSERT-OCR实现车牌的检测与识别开学花了十天时间0基础搞 ...
- python ocr 识别车牌_python+opencv+TESSERT-OCR实现车牌的检测与识别
python+opencv+TESSERT-OCR实现车牌的检测与识别 开学花了十天时间0基础搞出来的,分享给大家,如果有什么错误希望大家给我指正.python师从小甲鱼,opencv师从贾志刚,B站 ...
- Coding-Party 基于飞桨的农作物智能识别系统病虫害识别
目录 Coding-Party 基于飞桨的农作物智能识别系统 病虫害识别 Coding-Party 基于飞桨的农作物智能识别系统 联合国粮食及农业组织最近的一份报告表明,每年农业生产的自然损失中有三分 ...
- Python | 人脸识别系统 — 人脸识别
博客汇总:Python | 人脸识别系统 - 博客索引 GitHub地址:Su-Face-Recognition 注:阅读本博客前请先参考 工具安装.环境配置:Python | 人脸识别系统 - 简介 ...
- 腾讯OCR识别图片(身份证、车牌号、名片、驾驶证、营业执照、银行卡、车牌号、人脸等)
[原文:https://blog.csdn.net/liguoqingxjxcc/article/details/82224670] 开始 腾讯OCR可以做什么? 可以鉴黄.识别身份证.名片.驾驶证. ...
- java 正则车牌_Android中手机号、车牌号正则表达式大全
手机号 手机名称有GSM:表示只支持中国联通或者中国移动2G号段(130.131.132.134.135.136.137.138.139.145.147.150.151.152.155.156.157 ...
- Linux系统下,智能中文车牌识别系统EasyPR的配置
1.将EasyPR_v1.6放置于/opt目录下,使用unzip命令进行解压.得到EasyPR文件夹 unzip EasyPR_v1.6.zip 2.使用chmod -R命令将该文件夹递归更改文件权限 ...
- 如何开发一个车牌识别,车牌识别系统,车辆识别系统毕业设计毕设作品
开发准备 第1步:准备好百度智能云的账号 第2步:在百度智能云领取对应AI开发的免费资源包 第3步:创建对应的应用,然后获取对应的开发信息,主要是下面几个 AppID:应用列表中 API Key:应用 ...
- 使用gpu服务器搭建人脸识别系统,人脸识别gpu服务器配置
人脸识别gpu服务器配置 内容精选 换一换 设置动态Batch档位参数,适用于执行推理时,每次处理图片数量不固定的场景.在某些推理场景,如检测出人脸后再执行人脸识别网络,由于人脸个数不固定导致人脸识别 ...
最新文章
- 易生信高级转录组分析和数据可视化-最后一天报名
- 机房线路老化了会有怎么样的影响?又该如何处理?
- 【NLP】可交互的 Attention 可视化工具!我的Transformer可解释性有救了?
- 【强化学习】一文带你理清强化学习
- .Net Core3 新特性整理
- 通过SQL Server 2008 访问Oracle 10g
- 百度Java工程师面试资源
- 微信号也有加人涨粉规则和限制?
- html5手机常亮,vue开发的webapp中的手机物理返回键,以及屏幕常亮处理
- 【perl】LWP module
- OSGi.NET 学习笔记 [模块化和插件化][概念]
- Hadoop架构中各个集群在开发中的作用
- Java类与对象——几个课堂例子的总结及作业
- mysql_query is deprecated_Function mysql_db_query() is deprecated 错误解决
- RayData大数据可视化教程(1)——软件使用和材质渲染基础
- 5G无线关键技术 — 低时延高可靠物联网设计
- Creator 开发微信小游戏-好友排行榜
- 脑机接口技术使瘫痪病人重获运动能力,4D打印技术已经到来!|技术前沿洞察...
- RTX3080和RTX2080TI 哪个好
- 虚拟机扩容、删除多余分区分配到C盘