一、前言
上一篇文章我们调用libcurl库去访问了百度,访问的是http协议的百度云主页。那么现在我们要基于翔云人工智能平台来实现人脸识别,具体的操作大概就是我们在linux下调用libcurl库去访问翔云人工智能平台,然后实现我们想要的两张人脸图片的识别结果这样一个功能。但是翔云人工智能平台的协议是https的协议,这是我们的libcurl库需要支持https协议的话,还需要装上openssl这个库,装好之后我们再重新安装libcurl库并且支持ssl这个库。
二、编译openssl支持libcurl的https访问
1.下载openssl库:
wget https://www.openssl.org/source/openssl-1.1.1a.tar.gz //下载
tar xvf openssl-1.1.1a.tar.gz //解压
./config //配置在系统的默认位置,省的我们调库的时候再去找库的位置
make //编译
sudo make install //最后一步安装完成
2.编译 libcurl库加上openssl 库:
./configure --prefix=$PWD/_install --with-ssl
make
make install
完成,这样我们调用libcurl库去访问https协议的网址就不会出错了。
三、base64编码
1.
因为我们调库去访问翔云人工智能平台实现人脸识别的时候,人家要求上传的图片要求是base64流的图片,所以我们要把上传识别的照片转化成base64流的格式。
2.什么是base64?
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。
Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。
Base64由于以上优点被广泛应用于计算机的各个领域,然而由于输出内容中包括两个以上“符号类”字符(+, /, =),不同的应用场景又分别研制了Base64的各种“变种”。为统一和规范化Base64的输出,Base62x被视为无符号化的改进版本。
四、封装base64编码函数并人脸识别成功
1.先把要是别的照片传到linux环境下:
3.平台要求的参数:
3.人脸识别代码
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <curl/curl.h>
#define true 1
#define false 0
typedef unsigned int bool;
char buf[1024] = {
'\0'};
size_t readData( void *ptr, size_t size, size_t nmemb, void *stream)
{
strncpy(buf, ptr, 1024);
//printf("%s\n",buf);
}
char *getPicBase64File(char *picFile)
{<