linux系统中利用QT实现车牌识别的方法

本文涉及的产品
车辆物流识别,车辆物流识别 200次/月
教育场景识别,教育场景识别 200次/月
OCR统一识别,每月200次
简介: linux系统中利用QT实现车牌识别的方法

     大家好,今天主要和大家分享一下,如何利用QT实现车牌识别的方法。



 

第一:车牌识别基本简介

     很多车牌方案商都有成熟的车牌识别技术,他们是靠这个吃饭的,不开源。当然网上也有一些开 源的车牌识别算法可以参考,但是我们 Qt 教程里不是讲车牌识别算法,因为过于复杂,内容多。 所以本教程也是使用方案商提供的接口来做车牌识别,例程比较简单,百度 AI 接口车牌识别 率非常高,毕竟能让别人花钱的东西是不一样的。下面就让我们使用 Qt 来调用百度 AI 车牌识 别的接口来做个例子吧

     车牌识别基本操作如下:

1、介绍百度车牌识别功能申请,及简单介绍调用流程。

2、用 Qt 编写示例程序。流程如下,将本地车牌照片(JPG),发送到百度车牌识别服务 器,然后由百度服务器返回车牌识别结果。

第二:车牌识别产品申请

    在浏览器输入“百度车牌识别”搜索,击进去。

     点击“技术文档”,其中您需要参阅下图的“技术文档”来查看使用手册。它里面会介绍 API 相关使用方法和领取免费的测试资源方法。

我们只需要领取车牌识别功能资源,根据百度提供的“技术文档”可以知道,在文字识别》 购买指南》免费测试资源,可以看到未实名认证的用户免费领取车牌识别功能为 200 次/月,实 名认证是 1000 次/月。根据自己所需,勺情实名认证。在快速入门》新手操作指引处,我们在 领取资源页面找到车牌识别,勾选“车牌识别”,然后点 0 元领取即可。

      点击上图的文字识别控制台(蓝色字体)就可以看跳转到创建文字识别的应用了。如下图。 点击创建应用后。在文字识别应用列表中,默认会把文字识别的应用全部勾选了,如下图。接 着填上相关信息,完成创建即可。

创建完成后,查看应用的 API Key 和 Secret Key。因为下面的程序需要用到。

第三:百度车牌识别API接口

     ocr 是笔者编写的车牌识别功能 demo,(ocr 原意光学字符识别即 Optical Character Recognition)。使用此程序需要修改自己应用的 client_id (API Key)和 client_secret( Secret Key)。

1 #ifndef OCR_H
2 #define OCR_H
3
4 #include <QNetworkAccessManager>
5 #include <QNetworkReply>
6
7 #include <QJsonDocument>
8 #include <QJsonParseError>
9 #include <QJsonObject>
10 #include <QJsonArray>
11 #include <QHostInfo>
12
13 #include <QFile>
14 #include <QImage>
15
16 class Ocr : public QObject
17 {
18 Q_OBJECT
19
20 public:
21 Ocr(QObject *parent = nullptr);
22 ~Ocr();
23
24 /* 请求网络 */
25 void requestNetwork(QString, QByteArray);
26
27 /* 获取识别结果 */
28 void getTheResult(QString fileName);
29 void getTheResult(QImage image);
30
31 private:
32 /* 存储获取 tokenUrl 地址 */
33 QString tokenUrl;
34
35 /* 存储 serverapi 地址 */
36 QString serverApiUrl;
37
38 /* 最终需要访问 token 的地址 */
39 QString accessToken;
40
41 /* 获取 token 的接口*/
42 const QString token_org =
"https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials
&client_id=%1&client_secret=%2&";
43
44 /* 填写网页上申请的 appkey 如 api_key ="g8eBUMSokVB1BHGmgxxxxxx" */
45 const QString api_key = "填写自己的 APP KEY";
46
47 /* 填写网页上申请的 APP SECRET 如
secret_key="94dc99566550d87f8fa8ece112xxxxx" */
48 const QString secret_key = "填写自己的 APP SECRET";
49
50 /* 百度服务器 API 接口,发送图片可返回识别结果 */
51 const QString server_api =
"https://aip.baidubce.com/rest/2.0/ocr/v1/license_plate?access_token=%1
";
52
53 /* 网络管理 */
54 QNetworkAccessManager *networkAccessManager;
55
56 /* 处理 Json 数据 */
57 QString getJsonValue(QByteArray ba, QString key);
58
59 /* 处理 Json 数据 */
60 QString getJsonValue(QByteArray ba, QString key1, QString key2);
61
62 public slots:
63
64 /* 准备读取响应返回来的数据 */
65 void readyReadData();
66
67 /* 响应完成处理 */
68 void replyFinished();
69
70 /* 开始识别 */
71 void readyToDetection(QString);
72 void readyToDetection(QImage);
73
74 signals:
75 /* 识别到车牌,发送信号 */
76 void ocrReadyData(QString);
77
78 };
79 #endif // OCR_H

分析:第 45 行,请填写读者自己在网页上申请的 API Key。本例不提供开放的 API Key,请填写 自已个人申请的! 第 48 行,请填写读者在网页上申请的 Secret Key。本例不提供开放的 Secret Key,请填写 自已个人申请的! 其他地址由来在百度车牌识别的帮助文档,它已经解释的很详细,我们只要阅读它的帮助 文档可知,这里就不详细说了。发送要识别的图片到服务器,就可以返回识别的结果了。

第四:车牌识别综合测试

     1、ocr 文件夹为车牌识别的应用程序,主要发送本地图片到百度车牌识别服务器上,然后返 回识别结果。

     2、 Headers 文件夹为界面的头文件。

     3、 Sources 文件夹为界面的源文件。

 我们直接构建工程,注意:运行之前需要把项目下的 image 文件夹拷贝到可执行程序的同 级目录下。此 image 文件夹目录存放的是要识别的车牌图片,若想替换自己的图片,需要把要 识别的图片替换到 image 文件夹下的 carlpr.jpg,名字要相同。

总结,我们使用了百度车牌识别的接口来完成这个车牌识别的过程,在这里我们虽然我们 不能学到车牌识别的算法,但是我们也学会了怎么根据百度 ai 的帮助文档去调用。并不是所有 的车牌识别算法都开源,毕竟也是别人的成果,别人的成果也是要付出的。此例程仅供参考使 用。实际用到项目上请购买相关的车牌识别产品。

目录
相关文章
|
3天前
|
Linux
Linux系统ext4磁盘扩容实践指南
这个过程就像是给你的房子建一个新的储物间。你需要先找到空地(创建新的分区),然后建造储物间(格式化为ext4文件系统),最后将储物间添加到你的房子中(将新的分区添加到文件系统中)。完成这些步骤后,你就有了一个更大的储物空间。
35 10
|
1月前
|
Linux
Linux系统之whereis命令的基本使用
Linux系统之whereis命令的基本使用
88 24
Linux系统之whereis命令的基本使用
|
15天前
|
存储 缓存 Linux
Linux系统中如何查看CPU信息
本文介绍了查看CPU核心信息的方法,包括使用`lscpu`命令和读取`/proc/cpuinfo`文件。`lscpu`能快速提供逻辑CPU数量、物理核心数、插槽数等基本信息;而`/proc/cpuinfo`则包含更详细的配置数据,如核心ID和处理器编号。此外,还介绍了如何通过`lscpu`和`dmidecode`命令获取CPU型号、制造商及序列号,并解释了CPU频率与缓存大小的相关信息。最后,详细解析了`lscpu`命令输出的各项参数含义,帮助用户更好地理解CPU的具体配置。
47 8
|
15天前
|
存储 运维 监控
深度体验阿里云系统控制台:SysOM 让 Linux 服务器监控变得如此简单
作为一名经历过无数个凌晨三点被服务器报警电话惊醒的运维工程师,我对监控工具有着近乎苛刻的要求。记得去年那次大型活动,我们的主站流量暴增,服务器内存莫名其妙地飙升到90%以上,却找不到原因。如果当时有一款像阿里云 SysOM 这样直观的监控工具,也许我就不用熬通宵排查问题了。今天,我想分享一下我使用 SysOM 的亲身体验,特别是它那令人印象深刻的内存诊断功能。
|
5天前
|
存储 NoSQL Linux
微服务2——MongoDB单机部署4——Linux系统中的安装启动和连接
本节主要介绍了在Linux系统中安装、启动和连接MongoDB的详细步骤。首先从官网下载MongoDB压缩包并解压至指定目录,接着创建数据和日志存储目录,并配置`mongod.conf`文件以设定日志路径、数据存储路径及绑定IP等参数。之后通过配置文件启动MongoDB服务,并使用`mongo`命令或Compass工具进行连接测试。此外,还提供了防火墙配置建议以及服务停止的两种方法:快速关闭(直接杀死进程)和标准关闭(通过客户端命令安全关闭)。最后补充了数据损坏时的修复操作,确保数据库的稳定运行。
18 0
|
2月前
|
缓存 安全 Linux
Linux系统查看操作系统版本信息、CPU信息、模块信息
在Linux系统中,常用命令可帮助用户查看操作系统版本、CPU信息和模块信息
193 23
|
3月前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
152 13
|
8月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
263 1
|
7月前
|
监控 C++ 容器
【qt】MDI多文档界面开发
【qt】MDI多文档界面开发
235 0
|
6月前
Qt开发
Qt开发