第一:百度车牌接口申请简介
首先,在浏览器输入“百度车牌识别”搜索。
点击“技术文档”,其中需要参考技术文档来查看使用手册,它里面会介绍API相关使用方法和测试方法。
我们只需要领取车牌识别功能资源,根据百度提供的“技术文档”可以知道,在文字识别》购买指南》免费测试资源,可以看到未实名认证的用户免费领取车牌识别功能为 200 次/月,实名认证是 1000 次/月。根据自己所需,勺情实名认证。在快速入门》新手操作指引处,我们在领取资源页面找到车牌识别,勾选“车牌识别”,然后点 0 元领取即可。
点击上图的文字识别控制台(蓝色字体)就可以看跳转到创建文字识别的应用了。如下图。
点击创建应用后。在文字识别应用列表中,默认会把文字识别的应用全部勾选了,如下图。接
着填上相关信息,完成创建即可。
创建完成后,查看应用的 API Key 和 Secret Key。因为下面的程序需要用到。
第二:百度识别代码实现
在源码路径下,先编写ocr.h源文件
#ifndef OCR_H #define OCR_H #include <QNetworkAccessManager> #include <QNetworkReply> #include <QJsonDocument> #include <QJsonParseError> #include <QJsonObject> #include <QJsonArray> #include <QHostInfo> #include <QFile> #include <QImage> class Ocr : public QObject { Q_OBJECT public: Ocr(QObject *parent = nullptr); ~Ocr(); /* 请求网络 */ void requestNetwork(QString, QByteArray); /* 获取识别结果 */ void getTheResult(QString fileName); void getTheResult(QImage image); private: /* 存储获取 tokenUrl 地址 */ QString tokenUrl; /* 存储 serverapi 地址 */ QString serverApiUrl; /* 最终需要访问 token 的地址 */ QString accessToken; /* 获取 token 的接口*/ const QString token_org ="https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials &client_id=%1&client_secret=%2&"; /* 填写网页上申请的 appkey 如 api_key ="g8eBUMSokVB1BHGmgxxxxxx" */ const QString api_key = "填写自己的 APP KEY"; /* 填写网页上申请的 APP SECRET 如 secret_key="94dc99566550d87f8fa8ece112xxxxx" */ const QString secret_key = "填写自己的 APP SECRET"; /* 百度服务器 API 接口,发送图片可返回识别结果 */ const QString server_api ="https://aip.baidubce.com/rest/2.0/ocr/v1/license_plate?access_token=%1 "; /* 网络管理 */ QNetworkAccessManager *networkAccessManager; /* 处理 Json 数据 */ QString getJsonValue(QByteArray ba, QString key); /* 处理 Json 数据 */ QString getJsonValue(QByteArray ba, QString key1, QString key2); public slots: /* 准备读取响应返回来的数据 */ void readyReadData(); /* 响应完成处理 */ void replyFinished(); /* 开始识别 */ void readyToDetection(QString); void readyToDetection(QImage); signals: /* 识别到车牌,发送信号 */ void ocrReadyData(QString); }; #endif // OCR_H
请填写读者自己在网页上申请的 API Key。本例不提供开放的 API Key,请填写自已个人申请的!
请填写读者在网页上申请的 Secret Key。本例不提供开放的 Secret Key,请填写自已个人申请的!
ocr 文件夹为车牌识别的应用程序,主要发送本地图片到百度车牌识别服务器上,然后返回识别结果。
Headers 文件夹为界面的头文件。
Sources 文件夹为界面的源文件。
注意:运行之前需要把项目下的 image 文件夹拷贝到可执行程序的同级目录下。此 image 文件夹目录存放的是要识别的车牌图片,若想替换自己的图片,需要把要识别的图片替换到 image 文件夹下的 carlpr.jpg,名字要相同。运行结果如下。
注意:Ubuntu 或者开发板需要联网!本程序适用于 Ubuntu18 和 I.MX6U开发板,Ubuntu16 会报 Openssl 版本错误!请注意!这就是为什么建议需要读者使用和笔者相同版本 Ubuntu 来开发的原因了!毕竟初学者处理不同的开发环境还是有点难度的!
第三:实现效果
效果分析如下:
运行程序后,界面会显示要识别的车牌图片,如果没有显示,是因为您没有把 image 文件夹拷贝到可执行程序的同级路径下。程序运行会根据您在百度上申请的车牌识别服务上的 API Key 与 Secert Key 来获取 token,获取 token 后,我们点击左上角的按钮就可以发送界面上显示的图片到百度车牌识别服务器上,服务器即会返回车牌识别结果。过程非常简单。如上图,识别的结果在界面的左上角
总结:我们使用了百度车牌识别的接口来完成这个车牌识别的过程,在这里我们虽然我们不能学到车牌识别的算法,但是我们也学会了怎么根据百度 ai 的帮助文档去调用。并不是所有的车牌识别算法都开源,毕竟也是别人的成果,别人的成果也是要付出的。此例程仅供参考使用。实际用到项目上请购买相关的车牌识别产品。