From 916b2ab3f0f2aa2ddeb5ae235328b9c8b5f68711 Mon Sep 17 00:00:00 2001 From: Teademia <2408387759@qq.com> Date: Thu, 28 Sep 2023 14:18:53 +0800 Subject: [PATCH] A.2 In this commit I compile 6.52 version into 5.90 And I was able to extract any object in the JSON provided by www.baidu.com Server In next Version. I will add an camera to read Image and deliver it to Server. --- .../BaiduAccessToken/BaiduAccessToken.pro | 31 + .../BaiduAccessToken.pro.user | 589 ++++++++++++++++++ QtSource/BaiduAccessToken/Face.qrc | 5 + QtSource/BaiduAccessToken/Image/OIP-C.jpg | Bin 0 -> 26870 bytes QtSource/BaiduAccessToken/getaccesstoken.cpp | 45 ++ QtSource/BaiduAccessToken/getaccesstoken.h | 44 ++ QtSource/BaiduAccessToken/main.cpp | 11 + QtSource/BaiduAccessToken/mainwindow.cpp | 47 ++ QtSource/BaiduAccessToken/mainwindow.h | 37 ++ QtSource/BaiduAccessToken/mainwindow.ui | 159 +++++ QtSource/BaiduAccessToken/qfacesearchr.cpp | 42 ++ QtSource/BaiduAccessToken/qfacesearchr.h | 52 ++ README.md | 19 +- 13 files changed, 1080 insertions(+), 1 deletion(-) create mode 100644 QtSource/BaiduAccessToken/BaiduAccessToken.pro create mode 100644 QtSource/BaiduAccessToken/BaiduAccessToken.pro.user create mode 100644 QtSource/BaiduAccessToken/Face.qrc create mode 100644 QtSource/BaiduAccessToken/Image/OIP-C.jpg create mode 100644 QtSource/BaiduAccessToken/getaccesstoken.cpp create mode 100644 QtSource/BaiduAccessToken/getaccesstoken.h create mode 100644 QtSource/BaiduAccessToken/main.cpp create mode 100644 QtSource/BaiduAccessToken/mainwindow.cpp create mode 100644 QtSource/BaiduAccessToken/mainwindow.h create mode 100644 QtSource/BaiduAccessToken/mainwindow.ui create mode 100644 QtSource/BaiduAccessToken/qfacesearchr.cpp create mode 100644 QtSource/BaiduAccessToken/qfacesearchr.h diff --git a/QtSource/BaiduAccessToken/BaiduAccessToken.pro b/QtSource/BaiduAccessToken/BaiduAccessToken.pro new file mode 100644 index 0000000..5ea3f4f --- /dev/null +++ b/QtSource/BaiduAccessToken/BaiduAccessToken.pro @@ -0,0 +1,31 @@ +QT += core gui network + +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets + +CONFIG += c++17 + +# You can make your code fail to compile if it uses deprecated APIs. +# In order to do so, uncomment the following line. +#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 + +SOURCES += \ + getaccesstoken.cpp \ + main.cpp \ + mainwindow.cpp \ + qfacesearchr.cpp + +HEADERS += \ + getaccesstoken.h \ + mainwindow.h \ + qfacesearchr.h + +FORMS += \ + mainwindow.ui + +# Default rules for deployment. +qnx: target.path = /tmp/$${TARGET}/bin +else: unix:!android: target.path = /opt/$${TARGET}/bin +!isEmpty(target.path): INSTALLS += target + +RESOURCES += \ + Face.qrc diff --git a/QtSource/BaiduAccessToken/BaiduAccessToken.pro.user b/QtSource/BaiduAccessToken/BaiduAccessToken.pro.user new file mode 100644 index 0000000..b77915d --- /dev/null +++ b/QtSource/BaiduAccessToken/BaiduAccessToken.pro.user @@ -0,0 +1,589 @@ + + + + + + EnvironmentId + {706fde59-1f6f-4587-ab55-a6cfcd222b29} + + + ProjectExplorer.Project.ActiveTarget + 0 + + + ProjectExplorer.Project.EditorSettings + + true + false + true + + Cpp + + CppGlobal + + + + QmlJS + + QmlJSGlobal + + + 2 + UTF-8 + false + 4 + false + 80 + true + true + 1 + false + true + false + 0 + true + true + 0 + 8 + true + false + 1 + true + true + true + *.md, *.MD, Makefile + false + true + true + + + + ProjectExplorer.Project.PluginSettings + + + true + false + true + true + true + true + + + 0 + true + + true + true + Builtin.DefaultTidyAndClazy + 8 + true + + + + true + + + true + + + + + ProjectExplorer.Project.Target.0 + + Desktop + Desktop Qt 5.9.0 MinGW 32bit + Desktop Qt 5.9.0 MinGW 32bit + qt.59.win32_mingw53_kit + 0 + 0 + 0 + + 0 + D:\Github\QtStudyDemo\build-BaiduAccessToken-Desktop_Qt_5_9_0_MinGW_32bit-Debug + D:/Github/QtStudyDemo/build-BaiduAccessToken-Desktop_Qt_5_9_0_MinGW_32bit-Debug + + + true + QtProjectManager.QMakeBuildStep + false + + + + true + Qt4ProjectManager.MakeStep + + 2 + 构建 + 构建 + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + clean + + 1 + 清除 + 清除 + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Debug + Qt4ProjectManager.Qt4BuildConfiguration + 2 + + + D:\Github\QtStudyDemo\build-BaiduAccessToken-Desktop_Qt_5_9_0_MinGW_32bit-Release + D:/Github/QtStudyDemo/build-BaiduAccessToken-Desktop_Qt_5_9_0_MinGW_32bit-Release + + + true + QtProjectManager.QMakeBuildStep + false + + + + true + Qt4ProjectManager.MakeStep + + 2 + 构建 + 构建 + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + clean + + 1 + 清除 + 清除 + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Release + Qt4ProjectManager.Qt4BuildConfiguration + 0 + + + 0 + D:\Github\QtStudyDemo\build-BaiduAccessToken-Desktop_Qt_5_9_0_MinGW_32bit-Profile + D:/Github/QtStudyDemo/build-BaiduAccessToken-Desktop_Qt_5_9_0_MinGW_32bit-Profile + + + true + QtProjectManager.QMakeBuildStep + false + + + + true + Qt4ProjectManager.MakeStep + + 2 + 构建 + 构建 + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + clean + + 1 + 清除 + 清除 + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Profile + Qt4ProjectManager.Qt4BuildConfiguration + 0 + 0 + + 3 + + + 0 + 部署 + 部署 + ProjectExplorer.BuildSteps.Deploy + + 1 + + false + ProjectExplorer.DefaultDeployConfiguration + + 1 + + true + true + true + + 2 + + false + Qt4ProjectManager.Qt4RunConfiguration:D:/Github/QtStudyDemo/BaiduAccessToken/BaiduAccessToken.pro + D:/Github/QtStudyDemo/BaiduAccessToken/BaiduAccessToken.pro + true + true + true + D:/Github/QtStudyDemo/build-BaiduAccessToken-Desktop_Qt_5_9_0_MinGW_32bit-Debug + + 1 + + + + ProjectExplorer.Project.Target.1 + + Desktop + Desktop Qt 6.5.2 MSVC2019 64bit + Desktop Qt 6.5.2 MSVC2019 64bit + qt.qt6.652.win64_msvc2019_64_kit + 0 + 0 + 0 + + 0 + D:\Github\QtStudyDemo\build-BaiduAccessToken-Desktop_Qt_6_5_2_MSVC2019_64bit-Debug + D:/Github/QtStudyDemo/build-BaiduAccessToken-Desktop_Qt_6_5_2_MSVC2019_64bit-Debug + + + true + QtProjectManager.QMakeBuildStep + false + + + + true + Qt4ProjectManager.MakeStep + + 2 + 构建 + 构建 + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + clean + + 1 + 清除 + 清除 + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Debug + Qt4ProjectManager.Qt4BuildConfiguration + 2 + + + D:\Github\QtStudyDemo\build-BaiduAccessToken-Desktop_Qt_6_5_2_MSVC2019_64bit-Release + D:/Github/QtStudyDemo/build-BaiduAccessToken-Desktop_Qt_6_5_2_MSVC2019_64bit-Release + + + true + QtProjectManager.QMakeBuildStep + false + + + + true + Qt4ProjectManager.MakeStep + + 2 + 构建 + 构建 + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + clean + + 1 + 清除 + 清除 + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Release + Qt4ProjectManager.Qt4BuildConfiguration + 0 + 0 + + + 0 + D:\Github\QtStudyDemo\build-BaiduAccessToken-Desktop_Qt_6_5_2_MSVC2019_64bit-Profile + D:/Github/QtStudyDemo/build-BaiduAccessToken-Desktop_Qt_6_5_2_MSVC2019_64bit-Profile + + + true + QtProjectManager.QMakeBuildStep + false + + + + true + Qt4ProjectManager.MakeStep + + 2 + 构建 + 构建 + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + clean + + 1 + 清除 + 清除 + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Profile + Qt4ProjectManager.Qt4BuildConfiguration + 0 + 0 + 0 + + 3 + + + 0 + 部署 + 部署 + ProjectExplorer.BuildSteps.Deploy + + 1 + + false + ProjectExplorer.DefaultDeployConfiguration + + 1 + + true + true + true + + 2 + + false + Qt4ProjectManager.Qt4RunConfiguration:D:/Github/QtStudyDemo/BaiduAccessToken/BaiduAccessToken.pro + D:/Github/QtStudyDemo/BaiduAccessToken/BaiduAccessToken.pro + true + true + true + + 1 + + + + ProjectExplorer.Project.Target.2 + + Desktop + Desktop Qt 6.5.2 MinGW 64-bit + Desktop Qt 6.5.2 MinGW 64-bit + qt.qt6.652.win64_mingw_kit + 0 + 0 + 0 + + 0 + D:\Github\QtStudyDemo\build-BaiduAccessToken-Desktop_Qt_6_5_2_MinGW_64_bit-Debug + D:/Github/QtStudyDemo/build-BaiduAccessToken-Desktop_Qt_6_5_2_MinGW_64_bit-Debug + + + true + QtProjectManager.QMakeBuildStep + false + + + + true + Qt4ProjectManager.MakeStep + + 2 + 构建 + 构建 + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + clean + + 1 + 清除 + 清除 + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Debug + Qt4ProjectManager.Qt4BuildConfiguration + 2 + + + D:\Github\QtStudyDemo\build-BaiduAccessToken-Desktop_Qt_6_5_2_MinGW_64_bit-Release + D:/Github/QtStudyDemo/build-BaiduAccessToken-Desktop_Qt_6_5_2_MinGW_64_bit-Release + + + true + QtProjectManager.QMakeBuildStep + false + + + + true + Qt4ProjectManager.MakeStep + + 2 + 构建 + 构建 + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + clean + + 1 + 清除 + 清除 + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Release + Qt4ProjectManager.Qt4BuildConfiguration + 0 + 0 + + + 0 + D:\Github\QtStudyDemo\build-BaiduAccessToken-Desktop_Qt_6_5_2_MinGW_64_bit-Profile + D:/Github/QtStudyDemo/build-BaiduAccessToken-Desktop_Qt_6_5_2_MinGW_64_bit-Profile + + + true + QtProjectManager.QMakeBuildStep + false + + + + true + Qt4ProjectManager.MakeStep + + 2 + 构建 + 构建 + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + clean + + 1 + 清除 + 清除 + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Profile + Qt4ProjectManager.Qt4BuildConfiguration + 0 + 0 + 0 + + 3 + + + 0 + 部署 + 部署 + ProjectExplorer.BuildSteps.Deploy + + 1 + + false + ProjectExplorer.DefaultDeployConfiguration + + 1 + + true + true + true + + 2 + + false + ProjectExplorer.CustomExecutableRunConfiguration + + true + true + + 1 + + + + ProjectExplorer.Project.TargetCount + 3 + + + ProjectExplorer.Project.Updater.FileVersion + 22 + + + Version + 22 + + diff --git a/QtSource/BaiduAccessToken/Face.qrc b/QtSource/BaiduAccessToken/Face.qrc new file mode 100644 index 0000000..15eab8a --- /dev/null +++ b/QtSource/BaiduAccessToken/Face.qrc @@ -0,0 +1,5 @@ + + + Image/OIP-C.jpg + + diff --git a/QtSource/BaiduAccessToken/Image/OIP-C.jpg b/QtSource/BaiduAccessToken/Image/OIP-C.jpg new file mode 100644 index 0000000000000000000000000000000000000000..68d854ad83cc98c522b8efb647c53d58cf20725b GIT binary patch literal 26870 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 =V$wI} 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

Zd&;4(D<{I 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 literal 0 HcmV?d00001 diff --git a/QtSource/BaiduAccessToken/getaccesstoken.cpp b/QtSource/BaiduAccessToken/getaccesstoken.cpp new file mode 100644 index 0000000..0ce9428 --- /dev/null +++ b/QtSource/BaiduAccessToken/getaccesstoken.cpp @@ -0,0 +1,45 @@ +#include "getaccesstoken.h" + + +GetAccessToken::GetAccessToken(QObject *parent) + : QObject{parent} +{ + +} + +QString GetAccessToken::GiveMeAccess() +{ + //qDebug()<post(Rst,buf); + + connect(Rpl,&QNetworkReply::readyRead, + [=]{ + + QByteArray JsonData=Rpl->readAll(); + JSO=QJsonDocument::fromJson(JsonData).object(); + //qDebug()< + +#include +#include +#include + +#include +#include + +#include + +class GetAccessToken : public QObject +{ + Q_OBJECT +public: + explicit GetAccessToken(QObject *parent = nullptr); + + + QString GiveMeAccess(); + void SendHttp(); + +signals: + + +private slots: + + +private: + QNetworkReply * Rpl; + QNetworkAccessManager * Manager; + QNetworkRequest Rst; + + + QJsonDocument JSD; + QJsonObject JSO; + + QString AcessToken; + +}; + +#endif // GETACCESSTOKEN_H diff --git a/QtSource/BaiduAccessToken/main.cpp b/QtSource/BaiduAccessToken/main.cpp new file mode 100644 index 0000000..fd3e533 --- /dev/null +++ b/QtSource/BaiduAccessToken/main.cpp @@ -0,0 +1,11 @@ +#include "mainwindow.h" + +#include + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + MainWindow w; + w.show(); + return a.exec(); +} diff --git a/QtSource/BaiduAccessToken/mainwindow.cpp b/QtSource/BaiduAccessToken/mainwindow.cpp new file mode 100644 index 0000000..60eb015 --- /dev/null +++ b/QtSource/BaiduAccessToken/mainwindow.cpp @@ -0,0 +1,47 @@ +#include "mainwindow.h" +#include "ui_mainwindow.h" + +MainWindow::MainWindow(QWidget *parent) + : QMainWindow(parent) + , ui(new Ui::MainWindow) +{ + ui->setupUi(this); + this->SetWindow(); + + + NewGetAccessToken=new GetAccessToken(); + NewGetAccessToken->SendHttp(); + + NewFaceSerchR=new QFaceSearchR; + NewFaceSerchR->SetImage(QImage(":/Face/Image/OIP-C.jpg")); + + +} + +MainWindow::~MainWindow() +{ + delete ui; +} + +void MainWindow::SetWindow() +{ + QScreen * MainScreen=QGuiApplication::primaryScreen(); + this->setGeometry(0,0,MainScreen->geometry().width()/2,MainScreen->geometry().height()/2); +} + + + + +void MainWindow::on_GetACButton_clicked() +{ + + Access_Token=NewGetAccessToken->GiveMeAccess(); + ui->lineEdit->setText(Access_Token); +} + + +void MainWindow::on_SendFace_clicked() +{ + NewFaceSerchR->SendRequest(); +} + diff --git a/QtSource/BaiduAccessToken/mainwindow.h b/QtSource/BaiduAccessToken/mainwindow.h new file mode 100644 index 0000000..ddc3152 --- /dev/null +++ b/QtSource/BaiduAccessToken/mainwindow.h @@ -0,0 +1,37 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include + +#include +#include + +#include + +QT_BEGIN_NAMESPACE +namespace Ui { class MainWindow; } +QT_END_NAMESPACE + +class MainWindow : public QMainWindow +{ + Q_OBJECT + +public: + MainWindow(QWidget *parent = nullptr); + ~MainWindow(); + + void SetWindow(); + +private slots: + + void on_GetACButton_clicked(); + + void on_SendFace_clicked(); + +private: + Ui::MainWindow *ui; + GetAccessToken * NewGetAccessToken; + QFaceSearchR * NewFaceSerchR; + QString Access_Token; +}; +#endif // MAINWINDOW_H diff --git a/QtSource/BaiduAccessToken/mainwindow.ui b/QtSource/BaiduAccessToken/mainwindow.ui new file mode 100644 index 0000000..9ef8ee3 --- /dev/null +++ b/QtSource/BaiduAccessToken/mainwindow.ui @@ -0,0 +1,159 @@ + + + MainWindow + + + + 0 + 0 + 800 + 600 + + + + + 0 + 0 + + + + MainWindow + + + + + + 10 + 10 + 781 + 161 + + + + + + + 1 + + + + + 0 + 0 + 779 + 69 + + + + 获取AccessToken + + + + + 0 + 10 + 771 + 55 + + + + + + + Show the Access Key + + + + + + + + + + + + + 0 + 0 + 779 + 69 + + + + 学生签到 + + + + + 10 + 0 + 761 + 61 + + + + + + + 拍照并签到 + + + + + + + + + + 0 + 0 + 779 + 69 + + + + Qt::DefaultContextMenu + + + 查看签到情况 + + + + + 0 + 20 + 781 + 71 + + + + + + + 查看 + + + + + + + + + + + + + + + 0 + 0 + 800 + 21 + + + + + + + + diff --git a/QtSource/BaiduAccessToken/qfacesearchr.cpp b/QtSource/BaiduAccessToken/qfacesearchr.cpp new file mode 100644 index 0000000..fc4375e --- /dev/null +++ b/QtSource/BaiduAccessToken/qfacesearchr.cpp @@ -0,0 +1,42 @@ +#include "qfacesearchr.h" + +QFaceSearchR::QFaceSearchR(QObject *parent) + : QObject{parent} +{ + +} + +void QFaceSearchR::SetImage(QImage Img) +{ + QByteArray byteArray; + QBuffer buffer(&byteArray); + buffer.open(QIODevice::WriteOnly); + Img.save(&buffer,"jpg"); + ImageBase64=QString::fromUtf8(byteArray.toBase64().data()); +} + +void QFaceSearchR::SendRequest() +{ + Manager=new QNetworkAccessManager(); + Request.setUrl(QUrl(tr("https://aip.baidubce.com/rest/2.0/face/v3/search?access_token=%1").arg(AcessToken))); + Request.setHeader(QNetworkRequest::ContentTypeHeader, "Content-Type: application/json"); + + jsob1.insert("group_id_list",group_id_list); + jsob1.insert("image", ImageBase64); + jsob1.insert("image_type","BASE64"); + + Reply=Manager->post(Request,QJsonDocument(jsob1).toJson()); + connect(Reply,&QNetworkReply::readyRead,this,&QFaceSearchR::On_Ready_Read); +} + +void QFaceSearchR::On_Ready_Read() +{ + QByteArray JsonData=Reply->readAll(); + QJsonObject obj=QJsonDocument::fromJson(JsonData).object(); + qDebug()< +#include + +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include + +class QFaceSearchR : public QObject +{ + Q_OBJECT +public: + explicit QFaceSearchR(QObject *parent = nullptr); + + void SetImage(QImage); //这个函数要吧传入的QImage写到这个类的ImageBase64里备用 + void SetToken(); //这个是用来设置SetToken; + + + void SendRequest(); +private: + QNetworkAccessManager * Manager; + QNetworkReply * Reply; + QNetworkRequest Request; + + QJsonDocument JSDocToSend; + QJsonObject jsob1; + + const QString AcessToken="24.97aea7f047412ad8b7d1a6f5ce4e43a2.2592000.1698292037.282335-39923179"; + QString ImageBase64; + QString StudenetName(); + QString group_id_list="Student"; +signals: + + + +private slots: + void On_Ready_Read(); + +}; + +#endif // QFACESEARCHR_H diff --git a/README.md b/README.md index d16b076..fd45fda 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,20 @@ # TeademiaRepository -Hello Every One and this is a test repository I created to test our own git repository \ No newline at end of file +Hello Every One and this is a test repository I created to test our own git repository + +## This is the structure of my project + +### Developments + +Here is where i note my mistake and difficulties that I have meet + +### Qtsource + +Where to find my Qt Source code + +The Qt Version I mainly used is 6.52 along with 5.9.0 + +6.52 Is usually used on Pc and 5.9.0 for RasperyPi + + +