【OpenCV+Qt】使用车牌识别系统EasyPR识别车牌号

news2025/2/2 4:34:45

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);//获取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

 

 

感谢观看!!!!

以上就是全部内容,如果对您有帮助,欢迎点赞评论,或者发现有哪里写错的,欢迎指正!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/104182.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用于医疗诊断的花青染料ICG-Sulfo-EG8-OSu,

凯新生物产品介绍&#xff1a; (ICG)是一个用于医疗诊断的花青染料。它是用于测定心输出量、肝脏功能、肝血流量,和对于眼科血管造影术。它有一个最大吸收光谱在800nm附近。这些红外波段可以穿透视网膜层,相比荧光素血管造影ICG血管造影图像允许进入更深的血液循环。传统的激活…

华为机试_HJ24 合唱队【中等】【收藏】

目录 描述 输入描述&#xff1a; 输出描述&#xff1a; 解题过程 提交代码 学习代码 代码一 代码二 收藏点 描述 N 位同学站成一排&#xff0c;音乐老师要请最少的同学出列&#xff0c;使得剩下的 K 位同学排成合唱队形。 设KK位同学从左到右依次编号为 1&#xff0…

想学Redis却不会安装,这有一个快速入门请拿去

一. Redis简介 1.什么是Redis Redis是一个完全开源免费、且遵守BSD协议的&#xff0c;高性能(NOSQL)的key-value数据库。Redis本身使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型&#xff0c;并提供多种语言的API。 2.Redis特点 Redis具有如下特点&#xff1…

DJ13-2 汇编语言程序设计

目录 一、顺序程序设计 二、分支程序设计 1. 用比较/测试命令条件转移指令实现分支 2. 采用跳转表实现多路分支 三、循环程序设计 1. 计数循环程序设计 2. 条件判断循环程序设计 四、子程序设计 1. 子程序设计举例 2. 主程序和子程序设计举例 一、顺序程序设计 举例…

低代码为什么会受到企业青睐?是何原因?

低代码为什么会受到企业青睐&#xff1f;是何原因&#xff1f;回答这个问题&#xff0c;只需用4个“更”字&#xff0c;就能很好的概括。 1、更快&#xff08;开箱即用&#xff09; 2、更省&#xff08;人力、时间成本&#xff09; 3、更合适&#xff08;需求贴合业务&#…

mfc常用控件

mfc在编写桌面客户端应用应用程序&#xff0c;在设计界面时&#xff0c;如果像一般的界面&#xff0c;实施人员或者适配人员使用(特定的用户群体)对界面要求没有那么高&#xff0c;只要软件功能正常&#xff0c;稳定就行&#xff0c;我们在做这些界面时&#xff0c;通常使用原生…

CSDN第16期竞赛

目录 1.比赛详情 2.竞赛感悟 3.竞赛题目回顾 &#xff08;1&#xff09;鬼画符门莲台争夺战 (2)津津的储蓄计划 &#xff08;3&#xff09;多边形的面积 (4)小桥流水人家 1.比赛详情 比赛地址&#xff1a;http://t.csdn.cn/b1Lzm 2.竞赛感悟 通过这次的周赛&#xff0c…

SQLserver技巧 年份判断,以及向上想下取整

SELECT [出厂日期],DATEDIFF(month,出厂日期,getdate())*1.0/12 as 使用年限/年 ---------得到的结果实际&#xff08;浮点&#xff09;,cast(DATEDIFF(month,出厂日期,getdate())*1.0/12 as decimal(18,1)) as 使用年限/年 FROM tableA参考&#xff1a; https://blog.csdn.…

这篇文章来告诉你几个实用的视频转文字的方法

相信大家在闲暇之余&#xff0c;都会通过一些网课来提高自己的知识本领吧&#xff01;有的时候在上网课的过程中&#xff0c;会感觉自己做笔记的速度赶不上老师的进度&#xff0c;重复观看又比较麻烦&#xff0c;这时我们就可以借助一些视频转换软件来将视频转换成文字&#xf…

元宇宙产业委共同主席倪健中:发挥元宇宙总部基地优势,探索农业元宇宙发展之路|2022首届海南自贸港(临高)乡村振兴发展论坛

12月12日&#xff0c;2022首届海南自贸港&#xff08;临高&#xff09;乡村振兴发展论坛暨经济合作洽谈周活动在临高开幕。此次活动以“精彩新临高抢滩自贸港”为主题&#xff0c;重点推介“红色”文旅、“黄色”农业、“蓝色”海洋、“绿色”金牌港和“紫色”数字经济组成的五…

【c++提高1】二叉树二叉堆(万字总结)

大纲 一、二叉树 二叉树&#xff1a;1.二叉树简介 二叉树&#xff1a;2.二叉树的性质 二叉树&#xff1a;3.二叉树的存储 二叉树&#xff1a;4.二叉树的遍历 二叉树&#xff1a;5.求解先序、后序、层次遍历序列 二叉树&#xff1a;6.例题 二、二叉堆 二叉堆&#xff1a;1.二叉堆…

Windows下NCNN环境配置(VS2019)

Windows下NCNN环境配置&#xff08;VS2019&#xff09; 本文修改自&#xff1a;Windows下ncnn环境配置&#xff08;VS2019&#xff09; 一、下载VS2019并安装 1、下载地址&#xff1a;https://visualstudio.microsoft.com/zh-hans/vs/ 2、下载后安装工作负载&#xff08;安装以…

答疑解惑:开发者必须了解的Unicode和字符编码系统

目录 前言 ASCII Unicode UTF-8 C#中的字符串类型 UTF-16 String.Length 返回的是字符个数吗&#xff1f; 问题与答案 总结 参考 前言 请大家先思考几个问题 为什么有时候页面文本全是“锟斤拷”等乱码&#xff0c;有时候是个别字符别被替换为了&#xfffd;呢&a…

2.fs文件系统模块

fs模块是Node.js官方提供的用于操作文件的模块 目录 1 导入fs模块 2 读取文件内容 fs.readFile() 2.1 读取成功 2.2 读取失败 2.3 搞个函数判定读取成功还是失败 3 写入文件内容 fs.writeFile() 3.1 写入成功 3.2 写入失败 3.3 搞个函数判定写入成功还是失败…

如何构建企业内的 TiDB 自运维体系

1. 前言 得物 App 从创立之初&#xff0c;关系型数据库一直使用的开源数据库产品 MySQL。和绝大部分互联网公司一样&#xff0c;随着业务高速增长、数据量逐步增多&#xff0c;单实例、单库、单表出现性能瓶颈和存储瓶颈。从选型和架构设计角度来看这很符合发展规律&#xff0…

[思维模式-8]:《如何系统思考》-4- 认识篇 - 什么是系统思考?系统思考的特征?系统思考的思维转变。

目录 第1章 系统思考概述 1.1 什么是系统思考 1.2 系统思考适合解决什么样的问题&#xff1f;解决复杂问题的有效利器&#xff01; 1.3 思维模式的转换&#xff1a;还原论向整体论&#xff08;西医向中医&#xff09; 第2章 系统思考的四项特征 2.1 看到全貌而非局部 2.…

ubuntu18.04+pycharm+pydesigner 配置教程(亲测可用)

文章目录系统环境pytorch 环境安装依赖包安装qtdesignerPyUICpycharm配置qtdesigner配置PyUIC配置成功如何使用参考文章&#xff1a;系统环境 ubuntu18.04 OS: Ubuntu 18.04.6 LTS Python version: 3.7 (64-bit runtime) Is CUDA available: True CUDA runtime version: 11.1…

物联网通信原理第4章 中远距离无线通信技术

目录 4.1 无线局域网&#xff08;WLAN, Wireless LAN&#xff09; 4.1.7 IEEE 802.11标准中的MAC子层&#xff08;掌握&#xff09; 1. IEEE 802.11 MAC帧格式 2. MAC层工作原理&#xff08;本章重点&#xff09; 4.4 无线局域网的扩频传输技术 4.4.1 直接序列扩频&#x…

使用inputmode改变移动端键盘弹出的类型

文章目录前言一、inputmode是什么&#xff1f;二、它有那些属性2.1 none2.2 text(默认值)2.3 numeric2.4 decimal2.5 tel2.6 search2.7 email2.8 url三、需要注意四、兼容前言 使用原因&#xff1a;需求是同时兼容移动端和PC端的输入&#xff0c;输入框数量多且绑定不同的对象…

深度学习Week11-调用官方权重进行检测(YOLOv5)

前言&#xff1a; 很早之前&#xff0c;我发过小白YOLOv5全流程-训练实现数字识别_牛大了2022的博客-CSDN博客_yolov5数字识别这篇文章&#xff0c;里面用简练语言分享用yolov5训练自己的识别器&#xff0c;但包括我在内许多人仍不了解其运行原理&#xff1b;过去两周&#xff…