此教程适合新手,如果有问题欢迎评论交流。
选择人脸识别
![](https://i-blog.csdnimg.cn/blog_migrate/bd040a73089f3d4ee9467083bd24623d.png)
编辑
立即使用
找到应用列表新建应用
这里我们全选,新用户可以领取免费的时长。
这里新建了一个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运行,可以看到下面打印信息。