libcurl库访问人工智能平台之人脸识别
创始人
2025-05-30 18:56:23
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库一样,它也有很多函数。

相关内容

热门资讯

女生古风伤感个性签名 女生唯美...   01、 相思难追 转动时光的椅背 旧日错过的年华与他来一杯  02、 那时回忆已成痂 初雪染白了...
中学生励志演讲稿范例 演讲稿三... 中学生励志演讲稿范例1  各位老师,各位同学,大家好。今天,我很荣幸站在这个舞台,来表达我从开学到现...
高冷霸气的qq个性签名 高冷霸...   01、 他和她住在同一栋楼 遗憾的是爱擦身而过。  02、 学历或专业而沾沾自喜,也不要因为你的...
高冷伤感个性签名经典 游戏个性... 01、 总归有人看不惯我,我能怎样,百般讨好还是杀人灭口.  02、 下雨了 我想起伞 也想起了你 ...
古风签名女生唯美句子 女生个性...   01、 一杯酒 一世意 了却长相思  02、 纵使相逢应不识  03、 相顾无言  04、 此生...
银行信贷员竞聘演讲稿范文 信贷... 银行信贷员竞聘演讲稿  竞聘人XX,我竞聘的岗位是信贷岗,竞聘理由如下:  我有一定的文字表达能力和...
关爱他人优秀演讲稿范文 关爱他... 关爱他人优秀演讲稿篇1  得到他人的的关爱是一种幸福,关爱他人更是一种美德。在我成长的岁月中,常常得...
颂歌献给党演讲稿范文 我把赞歌... 颂歌献给党演讲稿一  亲爱的党啊,在庆祝您华诞之际,请收下我,一名曾在死亡线上徘徊了好长一段时间后,...
励志演讲稿参考范文 励志演讲稿... 励志演讲稿参考范文【1】  各位领导、各位同事,大家下午好!  今天我要演讲的题目是《青春风采、励志...
银行营销岗位竞聘演讲稿 银行竞...   银行营销岗位竞聘演讲稿1  我是来自观音阁支行的李梦娜,我演讲的题目是学习、创新、团结。  每个...
logstash+elasti... 文章目录一.安装ELK 7.17二.为Elasticsearch设置密码三.配置logstash四....
华为OD机试题,用 Java ... 华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已...
银行竞聘副行长演讲稿 竞聘银行... 银行竞聘副行长演讲稿【1】  尊敬的各位评委、各位领导、同志们:  大家*午好!  首先,真诚的感谢...
关于低碳绿色环保演讲稿 节能低...  尊敬的各位领导,各位评委,敬爱的老师,亲爱的同学们:  大家晚上好!  我演讲的题目是《迈出那一小...
因果推断dowhy之-ihdp... 0x01. 案例背景 IHDP(Infant Health and Developme...
关于银行竞聘演讲稿三篇 银行营... 银行竞聘演讲稿1尊敬的各位领导、同志们:  大家好!  我叫xxx,现年32岁,金融本科文化,中国共...
加强师德师风教育演讲稿 师德师... 加强师德师风教育演讲稿一  今天,我们怀着喜悦的心情迎来了中国共产党的80华诞。中国共产党是中国工人...
环保先进个人演讲稿范文 环保工...   环保先进个人演讲稿  同学们:  我今天发言的主题是《保护环境,珍惜地球》。  我们生活在地球上...
医院借力泛微今承达实现数字化合...   国家卫健委印发的《公立医院内部控制管理办法》中要求“充分利用信息技术加强内部控制建设࿰...
设置jvm参数,验证结果 文章目录前言一、启动java项目二、开始验证设置项目的jvm参数总结 前言 书接上文上个博文 由于...