利用百度AI接口实现车牌识别功能(三)

这里我简单做了一个客户端,方便识别车牌照片和查看车牌信息

 实现代码如下

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setWindowTitle("车牌识别");
    window_Init();
    QString API_Key = "uouz4ooWGueBdby82jzGzRBS";
    QString Secret_Key = "MtCoFde0OWMurzSY9ffxudH1Gqd475at";

    manager= new QNetworkAccessManager(this);
    connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(read_ack(QNetworkReply*)));

    connect(ui->pushButton_open,SIGNAL(clicked(bool)),this,SLOT(pushButton_open_clicked()));
    connect(ui->pushButton_discern,SIGNAL(clicked(bool)),this,SLOT(pushButton_discern_clicked()));
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::window_Init(){
    ui->label_show->setText("打开文件");
    ui->label_show->setAlignment(Qt::AlignCenter | Qt::AlignLeft);
    ui->label->setText("展示区域");
    ui->pushButton_open->setText("打开文件");
    ui->pushButton_discern->setText("识别");
    ui->label_result->setText("识别结果");
    ui->label_path->setText("文件路径");
}

与上篇文章不同的是,我又重新重复了一次创建应用的过程,如下

不同的地方是要将这个地方的车牌识别勾选上,如果这里不勾选的话是识别不成功的,会出现 Unsupported openapi method 等错误信息

 然后将AK,SK,URL地址填入就可以了

最后将完整代码奉上

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setWindowTitle("车牌识别");
    window_Init();
    QString API_Key = "uouz4ooWGueBdby82jzGzRBS";
    QString Secret_Key = "MtCoFde0OWMurzSY9ffxudH1Gqd475at";

    manager= new QNetworkAccessManager(this);
    connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(read_ack(QNetworkReply*)));

    connect(ui->pushButton_open,SIGNAL(clicked(bool)),this,SLOT(pushButton_open_clicked()));
    connect(ui->pushButton_discern,SIGNAL(clicked(bool)),this,SLOT(pushButton_discern_clicked()));
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::window_Init(){
    ui->label_show->setText("打开文件");
    ui->label_show->setAlignment(Qt::AlignCenter | Qt::AlignLeft);
    ui->label->setText("展示区域");
    ui->pushButton_open->setText("打开文件");
    ui->pushButton_discern->setText("识别");
    ui->label_result->setText("识别结果");
    ui->label_path->setText("文件路径");
}

void MainWindow::pushButton_open_clicked(){
    QString fileName = QFileDialog::getOpenFileName(this,tr("选择图片"),"./",tr("Image files(*.bmp *.jpg *.pbm *.pgm *.png *.ppm *.xbm *.xpm);All files (*.*)"));
    if(fileName.isEmpty()){
        QMessageBox msg;
        msg.warning(this,"error","打开失败");
        return;
    }
    ui->lineEdit_path->setText(fileName);
    QImage image(fileName);
    ui->label_show->setPixmap(QPixmap::fromImage(image));
    ui->label_show->setScaledContents(true);
    if(image.isNull()){
        QMessageBox::information(this,"信息","打开失败");
    }
}


void MainWindow::pushButton_discern_clicked(){
    myrequset.setUrl(QUrl("https://aip.baidubce.com/rest/2.0/ocr/v1/license_plate?""access_token=24.4b315a9672a43bf28a3e941c50bfa938.2592000.1666411013.282335-27580391"));
    QString data =QString("grant_type=client_credentials&client_id=uOReQ28AusCHtFtxNXPvkNFM&client_secret=o3pPzoONBo0t189GC3mPUssa6Y82azkG&");
    myrequset.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");//设置http的头

    QFile file(ui->lineEdit_path->text());
    file.open(QIODevice::ReadOnly);
    QByteArray buf = file.readAll();

    //2.转成base64及urlcode
    QByteArray buf64 = buf.toBase64().toPercentEncoding();
    QByteArray body = "image="+buf64;

    //发送完整请求
    manager->post(myrequset,body);


}

void MainWindow::read_ack(QNetworkReply* r)
{
    //提取json格式的返回
    QByteArray buf = r->readAll();
    qDebug() << buf;

    //提取json中的感兴趣的内容
    QJsonDocument myjson = QJsonDocument::fromJson(buf);
    QJsonObject node = myjson.object();
    QJsonObject arr = node.value("words_result").toObject();
    QString text = arr.value("number").toString();
    ui->textEdit_show->setText(text);
}

最后效果

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值