Linux基础之Libcurl库之HTTPS协议实现人脸识别

一、前言

上一篇文章我们调用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)
{
   
        
       
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
libcurl 是一个常用的用于网络传输的 C 函数,它支持各种网络协议和通信方式,包括 HTTP、FTP、SMTP 等,并且可以实现异步长连接访问。 异步访问是指在进行网络请求的同时,程序可以继续执行其他操作,不需要等待请求完成再进行下一步操作。而长连接是指在一次建立连接后,可以多次发送请求,不需要每次都重新建立连接。 在 libcurl 中,可以通过设置 CURLMOPT_PIPELINING 选项来开启长连接,然后通过设置 curl_easy_setopt 函数的 CURLMOPT_CHUNK_LENGTH 和 CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 选项来调整请求的长度和延迟等参数。 同时,libcurl 还提供了 multi interface,通过这个接口可以在多个请求之间切换,实现异步访问。具体方法是先通过 curl_multi_init 函数初始化一个 multi 对象,然后使用 curl_easy_setopt 函数设置每个请求的参数,最后通过 curl_multi_add_handle 函数将请求添加到 multi 对象中。通过 curl_multi_perform 函数可以开始异步访问,然后通过 curl_multi_fdset 和 curl_multi_wait 函数来等待请求完成,最后通过 curl_multi_remove_handle 函数将请求从 multi 对象中删除。 libcurl 异步长连接访问的主要优势在于可以提高程序的并发能力和效率,减少网络请求的开销和资源消耗。但需要注意的是,由于异步访问可能会带来线程安全等问题,因此在使用时需要注意保护资源和数据的完整性和安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值