QT对接百度云实现人脸注册和识别

文章目录

目录

一.UI界面设计

1.获取Access Token

二 http协议头构造

三.对接百度云人脸注册和识别

四.json数据处理

五,数据----->UI界面

六,效果 ​编辑

 总结:      


一.UI界面设计

左上lineedit是处理后的解析的json数据

下方的lineedit2是利用解析数据再进行数据库查询得到的数据

标签 人脸拍照OK是进行一个图片的显示

黑的部分是摄像头//我把摄像头堵了所以看不见

选择图片按钮是为了进行功能测试添加

 

 

二、对接百度云

          参考:        Qt+百度AI实现人脸识别之人脸检测

        对接格式一定要 严格 严格 严格 按照百度云要求的格式!!!

1.获取Access Token

       可以使用在线post工具,也可以在代码中申请,使用Api_Key,Secret_Key获取Token;

QString httpRequest::GetBaidu_Token(QString &Api_Key, QString &Secret_Key)
{QString  Url = "https://aip.baidubce.com/oauth/2.0/token?";QByteArray append = QString("grant_type=client_credentials&client_id=%1&client_secret=%2").arg(Api_Key).arg(Secret_Key).toLatin1();Network_Request(Url, append);QByteArray JsonData;QEventLoop loop;auto c = connect(this, Network_Reply_Finish, [&](const QByteArray & data){JsonData = data;loop.exit(1);});loop.exec();disconnect(c);QJsonObject data =  QJsonDocument::fromJson(JsonData).object();if (data.isEmpty() && !data.contains("access_token"))return "get error";return data.value("access_token").toString();
}

二 http协议头构造

void httpRequest::Network_Request(QString & Url, QByteArray Request_Data)
{// 构造请求QNetworkRequest Request((QUrl(Url)));Manager = new QNetworkAccessManager(this);connect(Manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(Network_Reply(QNetworkReply*)));//设置头信息Request.setHeader(QNetworkRequest::ContentTypeHeader, "Content-Type: application/json");//Request.setHeader(QNetworkRequest::ContentTypeHeader,QVariant("application/json"));// 发送请求Manager->post(Request, Request_Data);qDebug()<<"构造HTTP头成功";
}void httpRequest::Network_Reply(QNetworkReply * Reply)
{if (Reply->isReadable()){Reply_Data = Reply->readAll();emit Network_Reply_Finish(Reply_Data);}
}

三.对接百度云人脸注册和识别

只给出人脸注册。     识别就按照百度API文档要求更改就可以了

掌握对图片进行BASE64编码,以及按格式进行数据上传

QJsonObject facecheck::insert_face(QImage &image,QString str)
{QByteArray ba;QBuffer buffer(&ba);image.save(&buffer, "jpg");QString imgData = QString(ba.toBase64());buffer.close();QJsonObject insetr_obj;insetr_obj.insert("image", imgData);insetr_obj.insert("image_type","BASE64");insetr_obj.insert("group_id","test_1");insetr_obj.insert("user_id",str);QString t1 ="https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add";QString Url=t1 + "?access_token=" + baiToken;http->Network_Request(Url, QJsonDocument(insetr_obj).toJson());QByteArray JsonData;QEventLoop loop;auto c = connect(http, http->Network_Reply_Finish, [&](const QByteArray & data){JsonData = data;loop.exit(1);});loop.exec();disconnect(c);      QJsonObject data =  QJsonDocument::fromJson(JsonData).object();return data ;
}

四.json数据处理

由于此项目是个人练手,所以要求较为简单。对数据处理也很粗暴

if(data.contains("result")){QJsonObject resobj = data.take("result").toObject();if(resobj.contains("user_list")){QJsonArray groupArray = resobj.take("user_list").toArray();for(int i=0; i<groupArray.size();i++){QJsonObject groupobj = groupArray[i].toObject();double score =groupobj.value("score").toDouble();info.append("匹配度:"+QString::number(score)+"\n");if(score > 75){name =groupobj.value("user_id").toString();info.append("云用户编号"+name+"\n");pclass=groupobj.value("group_id").toString();info.append("云所属组:"+pclass+"\n");//班级                   }else{info.append("库里没有此人! nohavethepeople\n");ui->lineEdit->clear();ui->lineEdit_2->clear();ui->lineEdit_3->clear();}}}}

五,数据----->UI界面

解析JSON返回的数据,再利用得到的部分数据去查询数据库,再将查询到的数据显示到UI界面

     db_select(name);ui->textEdit->clear();QDateTime dtm = QDateTime::currentDateTime();QString time = dtm.toString("yyyy.MM.dd hh:mm:ss ddd");info.append(time);ui->textEdit->setText(info);

代码写的很杂乱,由于数据库的原因,没有单独封装函数

由于注册功能是后面写的,导致图3也就是注册功能没有对原有的界面数据进行全部更高

只讲lineedit的内容改成了???表示库中没有此人,去进行了一个注册,如果库里有此人则是图2状况。正常识别则是图1效果

人脸识别也是一样,如果库中没有此人则识别失败,点击注册再点击识别即可识别成功

可以知道对于人脸注册和识别的功能是有的。同时UI界面数据的更改表示对数据库的查询以及对界面的修改也是有的

六,效果 

 

 

 总结:      

        还停留在面向过程思维。只会写垃圾轮子。
        学习到了{
        1.对接百度云
            要得到自己的token,可以用代码去申请,也可以在网站申请(但只有30天期限)
            采用的post请求 url 和 json 格式必须严格按照文档写
        2.json解析
        3.复习了QT一些部件功能
        } 

代码和更多总结,请点击:点这

提取码:XLLL

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/61157.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于MobileNetv3实现人脸面部表情识别

前言 大家好,我是阿光。 本专栏整理了《PyTorch深度学习项目实战100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmPy…

Qt+百度AI实现人脸识别之人脸检测

文章目录 简单需求Demo运行结果百度AI人脸识别接入为什么使用百度AI接口接入步骤如何获取Access Token Qt软件开发人脸检测Qt编程步骤知识点网络编程get、put、post请求方式的区别简述POST 提交数据方式如何对图片进行BASE64编码JSON数据解析 核心代码数据上传请求反馈数据解析…

眼见不为“实”,人们更信任人工智能合成的假脸

常言道&#xff0c;耳听为虚&#xff0c;眼见为实。但是现在随着人工智能技术的发展&#xff0c;眼见可不一定为实。而造成这一结果的全都是因为深度伪造技术&#xff0c;简称深伪技术或者深度伪造。是Deep Learing&#xff08;深度学习&#xff09;和Fake&#xff08;伪造&…

LiveData数据倒灌?你真的用对了吗?源码解析

文章目录 livedata/lifecycleandroidx-lifecycle基本使用uml-关键角色关系观察者模式关键源码分析 livedata基本使用源码分析还是从observe开始livedata变化通知观察者 viewmodel源码分析 FAQlifecycle用到的设计模式lifecycle是如何监听aty生命周期的一些废弃和原因为什么废弃…

Spring Boot 优雅实现多租户架构,so easy~!

点击关注公众号&#xff0c;Java干货及时送达 国内最强微服务框架&#xff0c;没有之一&#xff01; 几乎覆盖 Spring Boot 所有操作&#xff01; 一、概述 1.什么是多租户架构&#xff1f; 多租户架构是指在一个应用中支持多个租户&#xff08;Tenant&#xff09;同时访问&…

Jenkins + Docker 一键自动化部署 Spring Boot 项目,步骤齐全,少走坑路!

点击关注公众号&#xff0c;Java干货及时送达 国内最强微服务框架&#xff0c;没有之一&#xff01; 几乎覆盖 Spring Boot 所有操作&#xff01; 本文章实现最简单全面的 Jenkinsdockerspringboot 一键自动部署项目&#xff0c;步骤齐全&#xff0c;少走坑路。 环境&#xff1…

MyBatis-Plus 可视化代码生成器来啦,让你的开发效率大大提速!!

点击关注公众号&#xff0c;Java干货及时送达 学习 Spring Cloud 微服务的正确姿势&#xff01; 用上 ChatGPT 啦&#xff0c;强的离谱&#xff01; 终于把 Spring Boot 3.0 写成书了&#xff01; 前言 在基于Mybatis的开发模式中&#xff0c;很多开发者还会选择Mybatis-Plus来…

农民工与学生为楼癫狂 富人加速撤离

首先是各级政府不约而同开始鼓励农民工进城买房。然后&#xff0c;国家信息中心宏观经济形势课题组的报告&#xff0c;甚至把这件事提高到了生死攸关的高度&#xff1a;农民工市民化&#xff0c;是消化住宅库存的关键环节和成败所在。特别想请教国家信息中心宏观经济形势课题组…

计算机成下一个土木了??

来源&#xff1a;知乎 最近互联网裁员&#xff0c;有网友热议&#xff1a;2022年大规模裁员后&#xff0c;计算机专业会不会成为下一个土木&#xff1f; 前些年抓住了互联网行业的红利期&#xff0c;进入大厂的员工&#xff0c;基本可以实现在一线城市买房扎根。 但反观现在&am…

读书笔记-大颠狂(非同寻常的大众幻想与群众性癫狂)

本书内容概要 《财富》杂志鼎力推荐的75本商务必读书之一&#xff0c;《金融时报》评选的史上最佳10部金融作品之一。本书在金融史上的地位不言自喻&#xff0c;在世界各地流传了近200年依然畅销不衰。它不单是一本金融投资领域的超级经典&#xff0c;也是一部有关人类愚行的编…

让人癫狂的24号,请你慢点离开

那一年&#xff0c;你18岁&#xff0c;初进联盟&#xff0c;受世人怀疑&#xff0c;拿下扣篮冠军  那一年&#xff0c;你19岁&#xff0c;史上ALL STAR首发&#xff0c;惊艳世人  那一年&#xff0c;你20岁&#xff0c;坐稳球队先发&#xff0c;场均19&#xff0c;成为一股…

IntelliJ IDEA 2019,从入门到癫狂,图文教程

点击上方“小哈学Java”&#xff0c;选择“星标” 回复“666”&#xff0c;领取100G独家整理的学习资料哟~ 来源&#xff1a;http://t.cn/Eiv6CTU 如果说IntelliJ IDEA是一款现代化智能开发工具的话&#xff0c;Eclipse则称得上是石器时代的东西了。 其实笔者也是一枚从Eclipse…

IntelliJ IDEA 2019从入门到癫狂 图文教程!

点击上方“方志朋”&#xff0c;选择“设为星标” 回复”666“获取新整理的面试资料 作者&#xff1a;yizhiwazi 来源&#xff1a;www.jianshu.com/p/9c65b7613c30 前言&#xff1a;IntelliJ IDEA 如果说IntelliJ IDEA是一款现代化智能开发工具的话&#xff0c;Eclipse则称得上…

新世纪的群众性幻想与癫狂3

又泡沫的地方&#xff0c;就有财富的地方 自我意淫的人造牛市 进入2015年以来&#xff0c;静默已久的A股股价就出现了一个令人意想不到的暴涨。到2015年6月中旬&#xff0c;上证综指已较2014年7月上涨了152%、较年初上涨了59.7%&#xff0c;中小企业板、创业板较年初更是上涨了…

癫狂的dom——利用css3让dom动起来

不废话&#xff0c;先来看一下效果&#xff1a; 下面上代码&#xff1a; html部分&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title></title><link href"shake.css" …

IntelliJ IDEA 2019从入门到癫狂

前言&#xff1a;IntelliJ IDEA 如果说IntelliJ IDEA是一款现代化智能开发工具的话&#xff0c;Eclipse则称得上是石器时代的东西了。 其实笔者也是一枚从Eclipse转IDEA的探索者&#xff0c;随着近期的不断开发实践和调试&#xff0c;逐步体会到这款智能IDE带来的巨大开发便利…

新世纪的群众性幻想与癫狂

历史不会改变&#xff0c;只会一次次的重复 经过了千万年的进化&#xff0c;人类已经站在了食物链的顶端。人类的进化并不是肢体或皮毛上演化所带来的结果&#xff0c;而是人类具有智慧&#xff0c;知道使用大脑去思考判断。但是&#xff0c;人毕竟还是动物&#xff0c;内心所保…

IntelliJ IDEA 2019从入门到癫狂 图文教程

点击上方“朱小厮的博客”&#xff0c;选择“设为星标” 做积极的人&#xff0c;而不是积极废人 来源&#xff1a;http://t.cn/Eiv6CTU 前言&#xff1a;IntelliJ IDEA 如果说IntelliJ IDEA是一款现代化智能开发工具的话&#xff0c;Eclipse则称得上是石器时代的东西了。 其实笔…

CXO是什么?医药板块龙头都有哪些?

制药行业是当今最复杂、监管最严格的行业之一。新药的开发&#xff0c;从最初的发现到最终的批准&#xff0c;是一个漫长而昂贵的过程&#xff0c;需要许多不同专业人士的专业知识。而制药公司面临的主要挑战之一是平衡创新需求与成本效率需求&#xff0c;面对这个挑战&#xf…

医疗器械上市公司

内在上交所和深交所上市的公司中&#xff0c;主营业务为医疗器械的一共有35家&#xff0c;在港交所上市的有8家&#xff0c;共计43家。 图片来自“123RF图库” 医疗器械、药品和医疗服务并称为医疗行业的三驾马车。国家政策的支持&#xff0c;市场容量的扩张&#xff0c;无疑…