QT调用百度ai人脸识别库->查找库

此教程适合新手,如果有问题欢迎评论交流。
选择人脸识别

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

​编辑
立即使用

找到应用列表新建应用

这里我们全选,新用户可以领取免费的时长。

这里新建了一个face

这里直接用之前添加过的库,下面是添加后的效果
在QT中pro文件加  network 模块
#include <QFile>
#include <QNetworkRequest>
#include <QUrlQuery>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QString>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //实例化网络大管家
    this->client = new QNetworkAccessManager(this);
    //信号与槽的关联
    connect(this->client, &QNetworkAccessManager::finished, this, &Widget::read_reply);
}
Widget::~Widget()
{
    delete ui;
}
//使用API接口进行人脸检测
void Widget::on_rec_btn_clicked()//此函数是pushbutt的槽函数
{
    QString access_token = "------------";
//填写自己生成的access_token

    QString url = "---------------?access_token=" + access_token;

//这里我们使用的是人脸识别的1:N,其他功能也和这个步骤一样,只有参数不一样,我们复制技术文档中的”url“替换掉QString url = "-----这里------?access_token=" + access_token;

    //图像数据准备
    QFile file_src(":/face.jpg");//可以使用本地图片,也可以使用opencv用级联分裂器
    file_src.open(QFile::ReadOnly);//只读的方式读取文件内容
    if (!file_src.isOpen()) {
        qDebug() << "Failed to open file:" << file_src.errorString();
        return; // 或者进行相应的错误处理
    }
    // 在QT里面不是Q开头的非基本数据类型,都是枚举 ,访问方式: 类名::枚举中的某一个值
    //读文件:进行base64编码
    QByteArray img_src = file_src.readAll().toBase64(); //这里转换为base64编码格式
    QJsonObject requestBody; // 创建一个 JSON 对象
    requestBody["image"] = QString(img_src); // 将图像数据添加到 JSON 对象中
    requestBody["image_type"] = "BASE64"; // 设置数据类型
    requestBody["group_id_list"] = "face"; // 设置用户所在组()
    requestBody["match_threshold"] = "80"; // 设置精度(这个可以不用设置,设置识别的准确度)
    QJsonDocument doc(requestBody); // 创建一个 JSON 文档
    QByteArray postData = doc.toJson(); // 将 JSON 文档转换为字节数组
    // 构建网络请求
    QNetworkRequest request(QUrl(url).toString());
    request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");//(设置Header)
    // 发送 POST 请求
    this->client->post(request, postData);
}
 
//读取应答包
void Widget::read_reply(QNetworkReply *reply)
{
    QJsonObject json = QJsonDocument::fromJson(reply->readAll()).object();
    // 获取 error_msg 信息
    QString errorMsg = json.value("error_msg").toString();
    //获取user_id信息
        QString user_id;
        if (json.contains("result") && json.value("result").isObject()) {
            QJsonObject resultObject = json.value("result").toObject();
            if (resultObject.contains("user_list") && resultObject.value("user_list").isArray()) {
                QJsonArray userListArray = resultObject.value("user_list").toArray();
                if (!userListArray.isEmpty()) {
                    QJsonObject userObject = userListArray.at(0).toObject();
                    user_id = userObject.value("user_id").toString();
                }
            }
        }
    if(errorMsg == "SUCCESS")
    {
        qDebug() <<"识别成功!"<<endl;
        qDebug() <<"用户id:"<<user_id;
    }
    else
    {
        qDebug() <<"未找到该用户!";
    }
}

所有内容结束后ctrl+r运行,可以看到下面打印信息。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值