首页 > 其他分享 >使用QT进行百度图像识别API调用

使用QT进行百度图像识别API调用

时间:2024-12-09 15:32:46浏览次数:6  
标签:case 图像识别 QT url bytes break json API post

此篇文章在2022年2月21日被记录
先上视频:

<iframe allowfullscreen="true" border="0" frameborder="no" framespacing="0" scrolling="no" src="//player.bilibili.com/player.html?aid=509203542&bvid=BV13u411X7LJ&cid=514057028&page=1"> </iframe>

完成思路:
1、先去百度智能云免费创建一个图片识别应用“点击我”,创建成功后可以获得API Key与Secret Key,后续我们将通过这两个key获取access_token,很简单,通过查看官网文档可以知道获取的方法,post获取之后就可以在返回的json字符串中看到,我们将它保存下来后续使用,需要注意的是access_token的有效期为30天,需要每30天进行定期更换。

2、首先新建页面布局,我使用qtcreator,这里是很简单的布局,在编辑器中拖动绘制即可,comboBox用来切换是哪种识别方式,两个按键分别用来打开图片与识别图片,整体界面如下图所示:

img

3、控件分别注册回调函数:

    void on_pushButton_clicked();
    void on_pushButton_2_clicked();
    void on_comboBox_currentIndexChanged(int index);

4、在线识别过程中,使用的是https通信,图片数据需要转换为base64格式,设置头部"Content-Type","application/x-www-form-urlencoded",其中,不同的识别类型具有不同的url,为此使用switch case进行切换:

    switch (index) {
    case 0 : post_url="https://aip.baidubce.com/rest/2.0/image-classify/v2/advanced_general";break;
    case 1 : post_url="https://aip.baidubce.com/rest/2.0/image-classify/v1/object_detect";break;
    case 2 : post_url="https://aip.baidubce.com/rest/2.0/image-classify/v1/animal";break;
    case 3 : post_url="https://aip.baidubce.com/rest/2.0/image-classify/v1/plant";break;
    case 4 : post_url="https://aip.baidubce.com/rest/2.0/image-classify/v1/classify/ingredient";break;
    case 5 : post_url="https://aip.baidubce.com/rest/2.0/image-classify/v1/multi_object_detect";break;
    }

然后在url中添加accessToken;

    QUrl url=post_url+"?access_token="+accessToken;

到此可以尝试进行一次通信,如果需要移植到arm开发板上的话,还需要配置ssl加密通信:

    QSslConfiguration config;//config SSL in arm
    config.setPeerVerifyMode(QSslSocket::VerifyNone);
    config.setProtocol(QSsl::TlsV1_0);
    request.setSslConfiguration(config);

5、获取到返回的数据后,在回调函数对数据进行解析,五种结果对应的结果格式并不统一,这里分别用五种方法对数据进行解析:

 if (reply->error() == QNetworkReply::NoError)
 {
     QString bytes = reply->readAll();
     qDebug() << bytes;//print recive data
     switch (ui->comboBox->currentIndex()) {
            case 0:advanced_general_json(bytes);break;
            case 1:object_detect_json(bytes);break;
            case 2:animal_json(bytes);break;
            case 3:plant_json(bytes);break;
            case 4:ingredient_json(bytes);break;
            case 5:multi_object_detect_json(bytes);break;
     }
 }

6、完成,并且可以通过qmake移植到linux开发板上。

注意:程序中目前是我的认证信息,仅作为测试使用,长期使用请自行申请。

标签:case,图像识别,QT,url,bytes,break,json,API,post
From: https://www.cnblogs.com/shumei52/p/18595048

相关文章

  • 使用Python调用百度API进行多目标检测
    此篇文章在2022年2月20日被记录直接上代码:#encoding:utf-8importrequestsimportbase64importcv2fromxpinyinimportPinyinp=Pinyin()img_src=r"C:\Users\TSK\Desktop\test.png"display_img=cv2.imread(img_src)#cl......
  • IDEA如何调试Stream API
    StreamAPI现在在实际开发中应用非常广泛,经常会遇到需要调试StreamAPI的场景,这篇文章主要讲解如何使用IDEA调试Stream@Testpublicvoidtest(){Stream.of(10,20,30,40,50).mapToInt(e->e*10).filter(e->e>200)......
  • 强化学习:基于课程学习的强化学习算法 —— 《Combining Reward Shaping and Curriculu
    地址:https://www.tesble.com/10.1109/ICTC.2018.8539438我们在四种不同的奖励函数和终止条件下对行走者进行了训练,以评估结合奖励塑形和课程学习的效果。具体如下。1)距离稀疏奖励:行走者到达目标时给予1个奖励,否则为0。2)距离课程奖励:给予行走者的奖励与行走者距离稀疏奖励......
  • Python-geopandas-读取MapInfor-20241209
    #读取数据,需要制定坐标格式shapefile_path=r'd:\Mapinfor\map\赣江新区新增图层.TAB'mapinfo_gdp=gpd.read_file(shapefile_path,driver="MapinfoFile")#先设置一个坐标系,否则会报提示性错误mapinfo_gdp=mapinfo_gdp.to_crs(epsg=4326)#校验坐标系,转换到目标投影......
  • Qt/C++离线读取全国任意经纬度高程海拔值/无任何依赖/纯原创代码解析
    一、前言说明做地图开发会遇到一个常规需求,就是获取当前经纬度对应的海拔高度,也叫做高程值,很遗憾各大地图厂商都未提供接口获取,可能是有明文规定,不能地图中提供对应的海拔高度值,于是需要另想他法,尽管谷歌地图在线的api接口是提供了海拔高度值,但是懂得都懂,国内哪里还能用谷歌地图?......
  • 使用Python开发获取商品销量详情API接口?(一篇文章全学会)
    在现代软件开发中,API(应用程序编程接口)已成为不同软件间交互的桥梁。尤其在电商领域,API接口使得开发者能够访问和操作电商平台上的数据,如商品详情、用户评价、订单信息等。本文将详细介绍如何使用Python开发一个获取商品销量详情的API接口。一、API接口概述API(ApplicationPro......
  • 【攻防技术系列】API Hook基础与实战
    例子:exe调用dll,后hook掉dll中的函数dll代码:#include<windows.h>//EntrypointoftheDLLBOOLAPIENTRYDllMain(HMODULEhModule,DWORDdwReasonForCall,LPVOIDlpReserved){switch(dwReasonForCall){caseDLL_PROCESS_ATTACH:break;caseDLL......
  • 关于SaiNiuApi
    实现原理SaiNiuApi是一款基于sunny开发的中间件调试框架,可以和任何编程语言对接二次开发,实现本地或远程调用千牛和1688商家工作台,采用JavaScript和WebSocketSecure构架,调用原生SDK函数,非内存hook、不修改文件、不注入进程内存,即用即连,即退即断,保持千牛原生文件,不封号,不掉线。软......
  • 人脸识别-API调用指南
    本节介绍人脸识别产品的API调用方法。1.选择产品聚合页点击【产品-人工智能】,选择【人脸识别】,打开对应的产品聚合页。2.打开产品文档点击【产品文档】,跳转到对应的文档中心,文档中心中【API参考】章节介绍了API调用的相关说明。3.查看API的请求地址API的请求地址格式为......
  • 人脸识别- API人脸检测
    接口描述用于检测输入图像中的人脸,输出人脸位置坐标。请求方法POST接口要求图片大小限制:图片单张大小小于2MB;图片格式限制:图片格式支持jpg/jpeg/png/bmp格式。URI/v1/aiop/api/2f6hqix09mv4/face/PERSON/person/detectFaceFromBase64请求参数1.请求头header参数参数......