QT + 百度智能云之人脸对比

前言

看此文之前,建议先看一下另一篇文章:基于 qt c++和百度智能云API的人脸图像识别应用实例
本文仅对人脸对比部分做描述。

人脸对比概述

上传两张图像数据,计算人脸的相似度。

效果图

在这里插入图片描述

接口代码

1、Qimage转base64编码,构造json数据,发起post请求。

void BaiduFaceOnline::FaceMatch(const QImage& image1, const QImage& image2)
{
    QString img1_base64 = image2base64_str(image1);
    QString img2_base64 = image2base64_str(image2);

    QJsonObject post_data1;
    post_data1.insert("image", img1_base64);
    post_data1.insert("image_type", "BASE64");
    QJsonObject post_data2;
    post_data2.insert("image", img2_base64);
    post_data2.insert("image_type", "BASE64");

    QJsonArray img_array;
    img_array.append(post_data1);
    img_array.append(post_data2);

    QJsonDocument document;
    document.setArray(img_array);
    QByteArray post_param = document.toJson(QJsonDocument::Indented);

    QUrl url(FaceMatchUrl + "?access_token=" + AccToken);
    NetRequest.setUrl(url);
    NetRequest.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json")); //接口固定
    connect(NetAccManager,&QNetworkAccessManager::finished,this,&BaiduFaceOnline::FaceMatchReply);
    NetAccManager->post(NetRequest,post_param);
}

2、接收反馈,解析json数据,使用信号发送至UI。

void BaiduFaceOnline::FaceMatchReply(QNetworkReply* reply)
{
    if (reply->error() != QNetworkReply::NoError)
    {
        QMessageBox::warning(0,"","请求错误!");
        return;
    }
    else
    {
        QByteArray content = reply->readAll();
        QJsonParseError jsonError;
        QJsonDocument doucment = QJsonDocument::fromJson(content, &jsonError);  // 转化为 JSON 文档
        if (!doucment.isNull() && (jsonError.error == QJsonParseError::NoError))
        {
            if (doucment.isObject())
            {
                QJsonObject root_object = doucment.object();
                if (root_object.take("error_code").toInt() == 0 && root_object.take("error_msg").toString() == "SUCCESS")
                {
                    QJsonObject result_object = root_object.take("result").toObject();
                    emit MatchReply("相似度:" + QString::number(result_object.take("score").toDouble()));
                }
            }
        }
        reply->deleteLater();
    }
    disconnect(NetAccManager,&QNetworkAccessManager::finished,this,&BaiduFaceOnline::FaceMatchReply);
}

源码地址

人脸检测、对比、识别示例源码
无需积分,关注我即可下载。欢迎在评论区提出您的意见和建议,一起探讨。

软件版本

qt 5.12.10

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值