QT上使用第三方庫的教程,附帶demo.
第一步:.
在新建的工程中的xxx.pro文件
第二步:.
使用BAT API的demo爲例子
BAT API DEMO
添加頭文件
INCLUDEPATH+=/home/bbigq/baiduAPI/image/aip-cpp-sdk-0.8.5
第三步:.
添加庫文件
LIBS+= -lcurl -lcrypto -ljsoncpp
源碼
#include "mainwindow.h"
#include "ui_mainwindow.h"
//使用QFileDialog打開一張圖
#include <QFileDialog>
//JSON相關頭文件
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonParseError>
#include <QJsonValue>
#include <QJsonArray>
//debug
#include <QDebug>
//添加第三方頭文件
#include "ocr.h"
#include "image_classify.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
//獲得文件的名字
QString fileName = QFileDialog::getOpenFileName(this,
tr("Open Image"), "/home/bbigq", tr("*"));
//打開一張圖片
QPixmap pic(fileName);
//設置大小
pic.scaled(ui->show->width(), ui->show->height());
//顯示圖片
ui->show->setPixmap(pic);
// 設置APPID/AK/SK
std::string app_id = "18078217";
std::string api_key = "rtYVoXqqeR7278NI0qGh99q9";
std::string secret_key = "u9FauW1mwvCfg9zdkwo58WzkYNKh6QNp";
aip::Imageclassify client(app_id, api_key, secret_key);
Json::Value result;
std::string image;
aip::get_file_content(fileName.toUtf8().data(), &image);
// 調用車型識別
result = client.car_detect(image, aip::null);
// 如果有可選參數
std::map<std::string, std::string> options;
options["top_num"] = "3";
options["baike_num"] = "5";
// 帶參數調用車型識別
result = client.car_detect(image, options);
//每次操作JSON時都先判斷該字符串是否爲JSON格式的
QJsonParseError err;
QJsonDocument json = QJsonDocument::fromJson(result.toStyledString().data(), &err);
if(err.error == QJsonParseError::NoError)
qDebug() << "DATA IS OK";
//判斷完之後,轉換成對象
QJsonObject obj = json.object();
QJsonValue msg = obj.take("result");
//這裏匹配到的result是數組對象,需要轉
QJsonArray msgArray = msg.toArray();
//將包含所需名字的信息的數組對象成員提取出來轉成單獨的對象
QJsonObject aim = msgArray.at(msgArray.size() - 1).toObject();
//匹配對應信息
QJsonValue name = aim.take("name");
qDebug() << name;
ui->textBrowser->setText(name.toString());
}