libcurl库访问人工智能平台之图像识别
创始人
2025-05-31 00:53:08
0次

一、前言

上一篇文章我们调用libcurl库去访问了百度,访问的是http协议的百度云主页。那么现在我们要基于翔云人工智能平台来实现人脸识别,具体的操作大概就是我们在linux下调用libcurl库去访问翔云人工智能平台,然后实现我们想要的两张人脸图片的识别结果这样一个功能。但是翔云人工智能平台的协议是https的协议,这是我们的libcurl库需要支持https协议的话,还需要装上openssl这个库,装好之后我们再重新安装libcurl库并且支持ssl这个库。

二、编译openssl支持libcurl的https访问

1.下载openssl库步骤:

1. wget https://www.openssl.org/source/openssl-1.1.1a.tar.gz //下载
2. openssl下载途径:官网下载地址

3. tar xvf openssl-1.1.1a.tar.gz //解压

4. ./config //配置在系统的默认位置,省的我们调库的时候再去找库的位置

5. make //编译

6. sudo make install //最后一步安装完成

我的是直接在官网下载在拷贝到开发板上:

(二)输入指令进行解压

tar xvf openssl-1.1.1l.tar.gz

(三)配置,编译,安装openssl库

①:vi README 打开安装指南

②:vi INSTALL 打开安装指南

③:配置openssl

./config

④:make 编译openssl库

make

⑤:sudo make install 安装自动会默认生成 ./configure --->目录下(/usr/local/)

sudo make install

⑥:查看安装结果(成功安装)

三、重新配置libcurl库

回到curl-7.71.1文件下,输入指令:

提示:要从上一个openssl-1.1.1a文件回到curl-7.71.1文件下
./configure --prefix=$PWD/_install --with-ssl
make
make install

完成,这样我们调用libcurl库去访问https协议的网址就不会出错了。

四、编写人脸识别代码

1、注册一个翔云人工智能开放平台的账号,然后购买人脸识别的产品,怎么注册和购买产品这里就不多说啦,大家可以去翔云网站了解哈。
翔云人工智能开放平台官网:人脸识别
(1)系统指令将图片转为base64编码数据---->封装接口API函数
(2)Post请求打通与翔云平台的路障

2、新建一个test2.c文件,编写人脸识别代码

#include 
#include 
#include 
#include #define true 1
#define false 0
typedef unsigned int bool;size_t readData(void *ptr,size_t size,size_t nmemb,void *stream)
{char buf[1024] = {'\0'};strncpy(buf,ptr,1024);printf("====================================get Data===================================\n");printf("%s\n",buf);
}
bool postUrl()
{CURL *curl;CURLcode res;char *postString;char img1[12];char img2[12];char *key = "这块内容请自行购买翔云人工智能平台的产品信息填写";   char *secret = "这块内容请自行购买翔云人工智能平台的产品信息填写"; int typeId = 21;char *format = "xml";postString = (char *)malloc(strlen(key)+strlen(secret)+2048);sprintf(postString,"img1=%s&img2=%s&key=%s&secret=%s&typeId=%d&format=%s","","",key,secret,21,format);curl = curl_easy_init();if (curl){curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "/tmp/cookie.txt"); // 指定cookie文件curl_easy_setopt(curl, CURLOPT_POSTFIELDS,postString);    // 指定post内容curl_easy_setopt(curl, CURLOPT_URL, "https://netocr.com/api/faceliu.do");   // 指定urlcurl_easy_setopt(curl, CURLOPT_WRITEFUNCTION,readData); //将返回的http头输出到fp指向的文件res = curl_easy_perform(curl);printf("OK:%d\n",res);curl_easy_cleanup(curl);}return true;
}
int main(void)
{postUrl();
}
gcc demo2.c -I ./curl-7.71.1/_install/include/ -L ./curl-7.71.1/_install/lib/ -lcurl

五、编程实现人脸识别第二次加入图片base64编码

提示: jpg格式的图片是压缩过的bmp格式的图片

因为我们调库去访问翔云人工智能平台实现人脸识别的时候,人家要求上传的图片要求是base64流的图片,所以我们要把上传识别的照片转化成base64流的格式。

1、什么是base64?

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。

Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。

Base64由于以上优点被广泛应用于计算机的各个领域,然而由于输出内容中包括两个以上“符号类”字符(+, /, =),不同的应用场景又分别研制了Base64的各种“变种”。为统一和规范化Base64的输出,Base62x被视为无符号化的改进版本。

因为我们调库去访问翔云人工智能平台实现人脸识别的时候,人家要求上传的图片要求是base64流的图片,所以我们要把上传识别的照片转化成base64流的格式。

2、编写代码前,先下载两张jpg格式的图片,放在和人脸识别代码同一个目录下,方便一会儿使用

3、编写人脸识别代码

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include #define true 1
#define false 0
typedef unsigned int bool;
char buf[10240] = {'\0'};size_t readData(void *ptr,size_t size,size_t nmemb,void *stream)
{strncpy(buf,ptr,1024);
}char* getPicBase64FromFile(char *filePath)
{char *bufPic;char cmd[128] = {'\0'};sprintf(cmd,"base64 %s > tmpFile",filePath);system(cmd);int fd = open("./tmpFile",O_RDWR);int filelen = lseek(fd,0,SEEK_END);lseek(fd,0,SEEK_SET);bufPic =(char *)malloc(filelen+2);memset(bufPic,0,filelen+2);read(fd,bufPic,filelen);close(fd);system("rm -f tmpFile");return bufPic;
}
bool postUrl()
{CURL *curl;CURLcode res;char *postString;char *key = "这块内容请自行购买翔云人工智能平台的产品信息填写";char *secret = "这块内容请自行购买翔云人工智能平台的产品信息填写";int typeId = 21;char *format = "xml";char *bufPic1 = getPicBase64FromFile("./11.jpg");char *bufPic2 = getPicBase64FromFile("./22.jpg");int len = strlen(key)+strlen(secret)+strlen(bufPic1)+strlen(bufPic2)+124;postString = (char *)malloc(len);memset(postString,'\0',len);sprintf(postString,"img1=%s&img2=%s&key=%s&secret=%s&typeId=%d&format=%s",bufPic1,bufPic2,key,secret,21,format);curl = curl_easy_init();if (curl){curl_easy_setopt(curl, CURLOPT_POSTFIELDS,postString);    // 指定post内容curl_easy_setopt(curl, CURLOPT_URL, "https://netocr.com/api/faceliu.do");   // 指定urlcurl_easy_setopt(curl, CURLOPT_WRITEFUNCTION,readData); //将返回的http头输出到fp指向的文件res = curl_easy_perform(curl);printf("OK:%d\n",res);if(strstr(buf,"是") != NULL){printf("同一个人\n");}else{printf("不是同一个\n");}curl_easy_cleanup(curl);}return true;
}
int main(void)
{postUrl();
}

4、进行编译:

gcc test3.c -I ./curl-7.71.1/_install/include/ -L ./curl-7.71.1/_install/lib/ -lcurl

5、执行结果: ./a.out

温馨提示:

因为我上述的代码中判断,如果两张照片是类似的就打印:同一个人,如过两张照片差距较大,就打印:不是同一个人,我放的是两张类似的照片,所以就打印了:同一个人

六、总结

1、我们是通过调libcurl库去访问翔云人工智能平台让平台来帮我们实现人脸识别和车牌识别的。所以要根据平台API的要求我们要上传哪些参数,然后利用我们调的libcurl库的函数帮我们访问上传这些参数,然后返回我们想要的结果。

2、所谓库就是别人已经封装好了的一些可执行程序,我们使用的时候只要去阅读库的使用说明来使用就好了。大致都是用到库的一些功能函数来实现我们想要的功能。像之前学到的树莓派的lirinbgPi库一样,它也有很多函数。

相关内容

热门资讯

在大吉订购APP订购交易亏损被...   近期,不少投资者反映在“大吉订购App”上投资白银、铂金等商品遭遇严重亏损。该平台宣称提供现货订...
铂银壹号APP商品订购交易亏损...   许多中小投资者误以为网上的“商品现货订购”是合规合法的理财渠道,殊不知这背后隐藏着巨大的合规风险...
兴鑫淘金APP贵金属订购交易亏...   白银、贵金属或其他商品类投资,除国家批准的正规期货交易场所及持牌期货公司外,市面上大量第三方交易...
铂银掘金APP无资质的违规平台...   铂银掘金等平台的投资者,往往是被“注册送现金”“充值返现券”“首单免亏”等广告话术吸引,进而下载...
八方淘金APP订购交易不合规,...   “八方淘金APP”“铂银掘金APP”“铂银壹号APP”等软件被指以“现货订购”为名,实际采用高杠...
在指尖订购APP订购商品亏损被...   指尖订购APP这类平台,表面是“订购交易”,实则是披着电商外衣的非法期货陷阱。绝大多数投资者被蒙...
在犀贝易购APP做商品订购交易...   市面上打着“现货投资”“贵金属交易”旗号的APP并不少,但真正合规、受监管的平台并不多。犀贝易购...
易达淘金APP虚假商品订购交易...   易达淘金APP存在严重的虚假宣传与违规交易行为。该平台打着“商品订购”的旗号,实则通过不合规的交...
大浪淘金APP白银订购亏损被骗...   大浪淘金APP最隐蔽的套路,在于其完全封闭的内盘交易系统。表面上,它宣称与国际贵金属市场接轨;实...
一品好购APP上订购白银出现亏...   一品好购APP原名“一品订购”,运营方为上海宝智未来信息技术有限公司。近期不少投资者反映在该平台...
九州订购APP贵金属订购投资骗...   九州订购APP正通过抖.音、快手、今日头条等平台大量投放投资广告,用“5元起投”“充值返现”“0...
坚锅淘金APP交易软件并不正规...   当前,市面上大量所谓的“现货商城订购”交易软件,早已偏离了正常的实物商品买卖,演变为高杠杆、高手...
斗金订购APP贵金属期货交易骗...   斗金订购APP的投资者往往被铺天盖地的广告宣传所诱导——注册即送现金、充值返现券等看似诱人的福利...
警惕!云启购APP违规经营,披...   "5元起投、充值返现、稳赚不赔"——这些诱人的广告语背后,可能是一个精心设计的金融陷阱。  近期...
量子淘金APP贵金属投资不合规...   "4元起投""充值返券""月入过万"——这些极具诱惑力的广告语在短视频平台、社交软件上铺天盖地。...
鑫汇智投APP贵金属商品订购骗...   鑫汇智投APP非法期货投资骗局,受害者在投资过程中根本不懂交易,也不去研究和验证这个平台是否正规...
矅光智策APP平台违规经营非法...   矅光智策APP对外宣称是“商城订购”“现货交易”,但查询其经营范围,并未显示具备开展现货期货交易...
黄金珠宝怎么选?内侧刻字都代表... 潮新闻客户端 记者 马焱 通讯员 任倩影 9月8日下午,“云游杭州 乐购金秋”——“浙城·浙放心”活...
原创 冰... 最近全球国债市场正在上演魔幻一幕: 美债、日债、欧债遭遇猛烈抛售,收益率冲到几十年新高,美国财政部都...
日韩股市开盘表现分化 上证报中国证券网讯 9月9日,日韩股市开盘表现分化,韩国综合指数开盘上涨0.26%,报6972.87...