赞
踩
EasyPR是一个中文的开源车牌识别系统,其车牌识别划分为了两个过程:即车牌检测(Plate Detection)和字符识别(Chars Recognition)两个过程:
车牌检测(Plate Detection):对一个包含车牌的图像进行分析,最终截取出只包含车牌的一个图块;
字符识别(Chars Recognition):从上一个车牌检测步骤中获取到的车牌图像,进行光学字符识别(OCR)这个过程
效果:
如果还没有搭环境,可参考
Ubuntu+Qt下配置车牌识别系统EasyPR1.6环境_logani的博客-CSDN博客
识别车牌和颜色,最多可同时识别4个
如果为0,就是获取到
第一次转换是将二值化、灰度化后的单通道转成三通道,
第二次转换才是将Mat的BGR转换成RGB
源码
- #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);//获取CPlate
- plateMat=plate.getPlateMat();//转换成Mat
- //第一次转换是将二值化、灰度化后的单通道转成三通道
- cvtColor(plateMat, carNum, CV_BGR2RGB);
- //第二次转换才是将Mat的BGR转换成RGB
- cvtColor(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_OBJECT
-
- public:
- 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

感谢观看!!!!
以上就是全部内容,如果对您有帮助,欢迎点赞评论,或者发现有哪里写错的,欢迎指正!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。