Linux libcurl库的使用,通过libcurl库进行人脸识别

libcurl简介及其编程应用 阅读详情

ibcurl简介

libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,和用户认证。

libcurl的官网 http://curl.haxx.se/ 

libcurl下载

点下面的下载链接,下载箭头指的文件。

库下载Release 7.71.1 · curl/curl · GitHub

libcurl安装

把下载好的文件放到Linux自己的工作目录中

1、解压文件

tar xvf curl-7.71.1.tar.bz2 

解压后得到curl-7.71.1 ,进入该目录

2、阅读相关说明文档

以后遇到需要使用这种开源包的时候,可以去读一读README文件和dosc这是这个库的介绍和使用说明。

这里通过看dosc/INSTALL文件,引导我们去看INSTALL.md文件,通过阅读INSTALL.md发现在Unix环境中需要一下三步来安装这个库。

3、配置安装路径和编译工具

回到curl-7.71.1目录

命令./configure  --prefix=&PWD/_install   --host =arm-linux-gnueabihf-gcc

--prefix指定安装路径   --host指定编译工具,本文是在ubantu上运行的而不是树莓派,因此下面就不指定编译编译工具了。

下面的命令表示安装到当前路径的_install文件夹下,这个_install会在第三步make install以后自动创建,会把编译以后的东西放在这个文件夹里面

./configure --prefix=$PWD/_install

4、编译

make

Linux make命令是一个编译工具,它可以根据文件时间戳自动发现跟新过的文件并重新编译,避免不必要的编译。

在Linux系统中,make命令通常与Makefile文件一起使用,该文件包含了如何编译和链接项目中的源文件的规则。使用make命令可以自动完成大批量源文件的编译工作,并建立不同文件之间的依赖关系

5、安装

make install

Linux make install命令是用于安装程序的命令。它会将编译好的程序文件复制到指定的目录中,以便用户可以直接运行程序

经过上面五步以后,就可以看到curl-7.71.1目录下多了一个_install目录了,包含bin,头文件和库

调用libcurl编程访问百度主页

https://www.cnblogs.com/xietianjiao/p/13260021.html附大神写的好文章。

代码如下

demo.c

#include <stdio.h>
#include <curl/curl.h>
#define    true    1
#define    false    0
typedef    unsigned int bool;
bool getUrl(char *filename)
{
    CURL *curl;
    CURLcode res;
    FILE *fp;
    if ((fp = fopen(filename, "w")) == NULL)  // 返回结果用文件存储
        return false;
    struct curl_slist *headers = NULL;
    headers = curl_slist_append(headers, "Accept: Agent-007");
    curl = curl_easy_init();    // 初始化
    if (curl)
    {
        //curl_easy_setopt(curl, CURLOPT_PROXY, "10.99.60.201:8080");// 代理
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);// 改协议头
        curl_easy_setopt(curl, CURLOPT_URL,"http://www.baidu.com");
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); //将返回的http头输出到fp指向的文件
        curl_easy_setopt(curl, CURLOPT_HEADERDATA, fp); //将返回的html主体数据输出到fp指向的文件
        res = curl_easy_perform(curl);   // 执行
        if (res != 0) {

            curl_slist_free_all(headers);
            curl_easy_cleanup(curl);
        }
        fclose(fp);
        return true;
    }
}
bool postUrl(char *filename)
{
    CURL *curl;
    CURLcode res;
    FILE *fp;
    if ((fp = fopen(filename, "w")) == NULL)
        return false;
    curl = curl_easy_init();
    if (curl)
    {
        curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "/tmp/cookie.txt"); // 指定cookie文件
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "&logintype=uid&u=xieyan&psw=xxx86");    // 指定post内容
        //curl_easy_setopt(curl, CURLOPT_PROXY, "10.99.60.201:8080");
        curl_easy_setopt(curl, CURLOPT_URL, " http://mail.sina.com.cn/cgi-bin/login.cgi ");   // 指定url
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
        res = curl_easy_perform(curl);
        curl_easy_cleanup(curl);
    }
    fclose(fp);
    return true;
}
int main(void)
{
    getUrl("/tmp/get.html");
    postUrl("/tmp/post.html");
}

1、编译

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

                         指定头文件                                           链接库          指定库文件位置

2、运行

编译完成直接运行会报错,提示缺少库,在编译程序时,你需要告诉编译器去哪里找到库文件。但是,这并不意味着系统会自动将这个路径添加到共享库搜索路径中。因此,你需要在运行程序之前,手动将库路径添加到LD_LIBRARY_PATH环境变量中。例如:

export LD_LIBRARY_PATH=./curl-7.71.1/_install/lib/

然后在运行就不会不会有问题了。

3、查看执行结果

根据代码来看,是把执行结果写入到了/tmp/get.html下,打开这个文件就可以看到执行结果了。

vi /tmp/get.html

结果如下:

使用libcurl实现人脸识别

重新安装libcurl以支持https类型的访问

需要注意的是上面安装的libcurl并不能访问https的网页,因为HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,所以在./configure的时候需要配置ssl

首先删掉上一次编译完成的_install目录

rm _install -rf

然后重新./configure,这次需要配置ssl。

./configure --prefix=$PWD/_install --with-ssl

这一步会报错,大概意思就是缺少OpenSSL的库,需要我们自己安装一下

执行下面的命令安装

wget https://www.openssl.org/source/openssl-1.1.1a.tar.gz

然后在你下载的那个目录下解压该文件

tar xvf  openssl-1.1.1a.tar.gz

然后进入该目录,去读INSTALL文件,可以看到安装的方法

可以看到和libcurl基本一致,第一步也是需要配置的,这里为了简单,直接./config默认安装到系统的默认目录下,

./config

完成以后继续make

make

完成以后make install

make install

注意这三个命令是安装OpenSSL的,可不要忘了安装libcurl的时候第一步因为没有OpenSSL出错了,这里重新去到curl-7.71.1目录三步曲一下

./configure --prefix=$PWD/_install --with-ssl   
make
make install  //最后一步不行的话需要加上sudo,sudo make install

至此,libcurl库就安装完毕了,可以进行https的链接了。

实现人脸识别

购买别人做好人脸识别的方案

自己网上搜人脸识别购买即可,购买以后去看厂家给的api,我购买的是翔云的,主要看这张图的内容

ocrKey和ocrSecrert红色的部分在自己的个人中心去看。注意这个的图片格式为base64流,在代码中需要把上传的图片转换为base64流。

直接上代码,我自己也是copy别人的代码,这里就不说怎么这些代码的意思了,只说需要自己改动的地方,直接看注释就可以了。

你需要准备好两张人脸照片,然后按着注释改动你自己的代码,完成以后编译运行即可。

#include <stdio.h>
#include <curl/curl.h>
#include<string.h>
#include<stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

#define  true 	1
#define  false	0
typedef unsigned int bool;
char *getBase64(char *picPath)//这个函数就是把图片转为base64流的  参数为照片的路径
{
	int fd;
	char *img=NULL;
	char cmd[128]={'\0'};
	sprintf(cmd,"base64 %s >tmpFile",picPath);
	system(cmd);

	fd=open("./tmpFile",O_RDWR);
	int fileSize=lseek(fd,0,SEEK_END);

	img=(char *)malloc(fileSize+2);
	memset(img,'\0',fileSize+2);
	lseek(fd,0,SEEK_SET);
	read(fd,img,fileSize);
	close(fd);
	system("rm -rf tmpFile");
	return img;
}

size_t readData( void *ptr, size_t size, size_t nmemb, void *stream)//回调函数的格式,访问https返回的信息会放到ptr指向的空间中
{
	char buf[1024]={'\0'};
	strncpy(buf,ptr,1024);
	printf("%s",buf);
}
bool postUrl(char *filename)
{
    CURL *curl;
    CURLcode res;
    char *postString=NULL;
    char *img1=NULL;
    char *img2=NULL;
    char *key="************************";//这里需要填入你自己的key
    char *secret="************************";//同样这里需要填入你自己的secret  去你购买识别方案的网址去找
    int  typeId=21;//这里需要看厂家给的文档  上图文档写的是21
    char *format="xml";//这里就按默认的xml格式

    img1=getBase64("./reba1.jpeg");//这里需要填你自己准备的两张人脸照片的位置
    img2=getBase64("./reba2.jpeg");//这里需要填你自己准备的两张人脸照片的位置

    int len=strlen(key)+strlen(secret)+strlen(img1)+strlen(img2)+124;
    postString=(char *)malloc(len);
    memset(postString,'\0',len);
    sprintf(postString,"&img1=%s&img2=%s&key=%s&secret=%s&typeId=%d&format=%s",img1,img2,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");   // 指定url
        curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,readData); //将返回的https返回的结果发送到回调函数中
	res = curl_easy_perform(curl);
	printf("res:%d\n",res);
        curl_easy_cleanup(curl);
    }
    free(img1);
    free(img2);
    free(postString);
    return true;
}
int main(void)
{
    postUrl("/tmp/post.html");
}
libcurl库简介 libcurl(网络协议库)简介 阅读详情

相关推荐

libcurl库使用详情、libcurl库的制作

​ libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,和用户认证。libcurl的官网 、库下载。这种库使用的时候就像使用wiringPi库一样,编写完代码需要链接这个库,所以要先下载这个库。libcurl的使用(其实和socket编程时一样,都需要一定的步骤):

qq_45698138的博客 5337

Linux基础之HTTP协议之Libcurl

libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,和用户认证。libcurl的官网:http://curl.haxx.se/1函数只能用一次。(其实在调用curl_global_cleanup 函数后仍然可再用)

weixin_55374007的博客 2550

OpenSSL编译说明:Linux结合libcurl库编程实现人脸识别和车牌识别_linux车牌识别(2)

最全的Linux教程,Linux从入门到精通第一份《Linux从入门到精通》466页内容简介====本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。

2201_75604341的博客 1080

Linux环境libcurl编译安装及环境配置

获取libcurl 网址:https://github.com/curl/curl/releases

guoqignrus的博客 2109

智能家居项目(七)之Libcurl库与HTTPS协议实现人脸识别

智能家居项目(七)之Libcurl库与HTTPS协议实现人脸识别;编译openssl支持libcurl的https访问;编程实现人脸识别第二次加入图片base64编码

l_z_y_000的博客 733

关于移植人脸识别功能到linux开发板

移植人脸识别到开发板上的思路

m0_57730390的博客 3804

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

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

weixin_55374007的博客 1740

Spring Boot整合Apache Hop 2.3.0实战:从零搭建数据管道(附完整代码)

本文详细介绍了如何在Spring Boot项目中整合Apache Hop 2.3.0,从零开始构建可嵌入的数据管道。内容涵盖环境初始化、依赖配置、管道设计,并通过完整代码示例演示了如何通过REST API触发执行,实现数据同步与ETL流程的自动化管理,为微服务架构提供灵活的数据集成方案。

web99的专栏 632

OpenSSL编译说明:Linux结合libcurl库编程实现人脸识别和车牌识别

① wget https://www.openssl.org/source/openssl-1.1.1a.tar.gz //下载② tar xvf openssl-1.1.1a.tar.gz //解压③ cd openssl-1.1.1a //进入解压皓的openssl-1.1.1a目录下④ ./config //配置在系统的默认位置,省的我们调库的时候再去找库的位置⑤ make //编译⑥ sudo make install //最后一步安装完成

m0_74985965的博客 931

UE4-(IK)实现人物脚贴合地面解决斜坡上脚无旋转无法贴合地面问题

在斜面上脚陷入模型中,需要设置旋转值对脚的骨骼进行一个旋转。 解决思路:在射线检测中可以获取到检测点的法线方向,根据法线方向来计算出脚应该向哪个方向进行适当的旋转,在斜坡上,人物脚需要旋转的轴为x轴和y轴以便来贴合地面,z轴方向的旋转是不需要进行修改的。 如图所示,我们需要求得水平面与斜坡的夹角用来得出人物在x轴上的脚旋转量,在蓝图中提供反正切函数,反正切 = 锐角的邻边/对边 所以 反正切值(脚x轴值(roll)) = 法线Y轴值/法线Z轴 值。 现在将上图的人物想象成面向屏幕,脚需...

Stone的博客 3316

WRF替换静态地理数据中的土地利用数据(WRF替换下垫面数据)

   在进行自己的WRF项目模拟的时候,因为需要用中国土地利用数据替换WRF内嵌老旧的土地利用数据,故需要将土地利用进行替换。我使用的中国的土地利用数据是来自中国土地利用数据(1980-2015)。其中我以下载的lucc1980为例进行演示。 1、坐标转换    (1)下载的lucc1980数据如下图所示:    (2)在ArcMap中打开如下图所示: 打开属性表可以看到,lucc1980的坐标系为投影坐标系Krasovsky_1940_Albers,数据格式为GRID。这里需要将投影坐标系转换成地理坐

GIS 1万+

OpenSSL编译说明:Linux结合libcurl库编程实现人脸识别和车牌识别_linux车牌识别

● 要通过libcurl库实现人脸识别,就需要libcurl库支持https协议。在上一篇文章中介绍了通过libcurl库来访问百度网页,只是基于http协议。● 要让libcurl库支持https协议实现人脸识别,就需要安装openssl这个库。● http与https:简言之,https比http多了加密协议,具体体现后面会说明。● 此篇人脸识别介绍主要目的是判断两张人脸图片的相似程度或者接近程度。

2401_84182906的博客 914

软考高级,信息系统项目管理师(高项)经验分享

软考高级,信息系统项目管理师(高项)经验分享 2020-12-21信息系统项目管理师(俗称高项)成绩出来了54,55,47,终于成为高级工程师了。 本文以编写整体管理论文的格式进行,将分为项目启动、项目计划、项目执行、项目检查、项目收尾5个过程回顾高项的考试历程,希望对其他同学有借鉴意义。个人觉得可能对于一次考不过的人参考价值比较大。 第一阶段、项目启动阶段Start——决定考哪个科目。 如图,高级资格的类型有:信息系统项目管理师、系统分析师、系统架构设计师、......

zcheva的专栏 5万+

OpenSSL编译说明:Linux结合libcurl库编程实现人脸识别和车牌识别_linux车牌识别(1)

● 要通过libcurl库实现人脸识别,就需要libcurl库支持https协议。在上一篇文章中介绍了通过libcurl库来访问百度网页,只是基于http协议。● 要让libcurl库支持https协议实现人脸识别,就需要安装openssl这个库。● http与https:简言之,https比http多了加密协议,具体体现后面会说明。● 此篇人脸识别介绍主要目的是判断两张人脸图片的相似程度或者接近程度。

m0_56169789的博客 746

基于RTL8370N的8口千兆无管理交换机硬件设计

无管理交换机是局域网边缘接入的核心基础设备,其本质是通过硬件状态机实现MAC地址学习、线速转发与自动协商,无需软件配置即可完成即插即用组网。原理上依赖高度集成的PHY+交换矩阵单芯片(如RTL8370N),结合确定性硬件逻辑替代MCU固件,保障低延迟、高可靠与零运维。技术价值体现在成本压缩、体积精简与部署极简化,广泛应用于家庭网络扩展、工业现场设备联网及嵌入式系统桥接等场景。本文详解一款基于RTL8370N的紧凑型8端口千兆无管理交换机,覆盖芯片选型依据、PHY接口设计、电源与散热优化等关键工程实践。

weixin_42327217的博客 400

手把手教你学Simulink——机器人控制场景实例:基于Simulink的双足人形机器人步态生成与ZMP稳定控制仿真

ZMP是地面上合力矩在水平方向为零的点。对于平面行走: [ x_{\text{zmp}} = x_c - \frac{z_c}{g} \ddot{x}_c ]📌稳定性判据ZMP必须始终位于支撑脚的凸包(即脚掌范围内)本文完成了基于Simulink的双足人形机器人ZMP稳定控制仿真,实现了:✅ 基于LIPM生成稳定CoM轨迹✅ 构建ZMP参考与验证机制✅ 设计简化踝关节PD控制器✅ 验证ZMP始终位于支撑脚内 → 动态平衡✅ 为人形机器人步态规划奠定理论基础。

MHD0815的博客 138

libcurl库访问人工智能平台之图像识别

libcurl库访问人工智能平台之人脸识别

m0_69211839的博客 320

eNSP中玩转Python自动化——解锁网工新姿势(一)

Python自动化一、安装Paramiko模块二、搭建实验环境1、桥接电脑网卡2、配置交换机IP地址交换机配置测试ensp的交换机与电脑的连通性:交换机配置SSHXshell验证三、Python脚本1、执行python脚本2、同步成功 一、安装Paramiko模块 首先安装Python3 然后安装pip解释器 最后安装Paramiko模块 Windows+R打开Cmd,输入命令: pip3 install paramiko 进入python,导入 paramiko模块: import paramiko

LiBai'S BLOG 2万+

C语言实现基于翔云平台的人脸识别demo1(linux)

C语言实现基于翔云平台的人脸识别(linux)实现步骤安装openssl第三方的库安装libcurl第三方的库购买使用翔云平台人脸识别的次数libcurl的使用**参考以下博文**:代码实现如何编译实现人脸识别的程序运行运行后会发现以下错误配置完临时环境变量后,再次运行后的结果 实现步骤 运用翔云平台的人脸识别的方案,通过使用第三方libcurl的库,用HTTPS方式访问官网进行人脸识别的操作,并拿到人脸识别得到的结果。 安装openssl第三方的库 原因:需要通过HPPTS的方式访问翔云平台的官网进行人

weixin_50438937的博客 1072

电动汽车远程监控与诊断软件:BMW ConnectedDrive EV远程监控二次开发_7.数据安全与隐私保护

数据加密是保护数据安全的重要手段之一。在电动汽车远程监控与诊断软件中,加密技术可以确保数据在传输过程中的安全性和完整性。常见的加密技术包括对称加密和非对称加密。

zhubeibei168的博客 884

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

智能家居(7) —— 人脸识别 & 翔云平台编程使用(编译openSSL支持libcurl的https访问、安装SSL依赖库openSSL)

智能家居 (6) —— 人脸识别 & 翔云平台编程使用(编译openSSL支持libcurl的https访问、安装SSL依赖库openSSL) 一、祥云人工智能开放平台 二、编译openSSL支持libcurl的https访问 安装SSL依赖库openSSL(使用工具wget) curl库重新配置,编译,安装 三、编程实现人脸识别 翔云人脸识别API文档 加入图片base64编码 人脸识别完整代码

Zy_1213的博客 1702

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Linux安装openssl库

Linux安装openssl库1.准备2.开始安装3.更新curl库 opensll库资源好多地方都会要钱,此方法可帮你免费下载哦 1.准备 wget https://www.openssl.org/source/openssl-1.1.1a.tar.gz 然后解压 tar xvf openssl-1.1.1a.tar.gz 进入文件夹 cd openssl-1.1.1a 2.开始安装 配置 ./config 编译 make 安装 echo ~ sudo make install 3.更新c

Aaronlxx的博客 1991

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

人脸识别(祥云平台)

目录1、图片base64流 1、图片base64流 Linux下jpg转base64,指令是base64 图片.jpg system(“base64 .jpg > tmpFile”);把转换完的数据放到tmpFile文件里 图片通过base64转码,用于HTTP环境 图片有很多种格式:把一个jpg格式的图片用记事本打开,就是RGB数据字符串 jpg,rgb都是bmp的压缩 base64就是把rgb字符串转为了base64 ...

小伟的博客 384

Linux下基于百度智能云平台人脸识别

Linux下基于百度智能云平台人脸识别 1.百度智能云接口及简介 https://cloud.baidu.com/product/face   接口技术文档: 2.人脸检测属性分析项目示例  硬件平台: ubuntu18.04、USB免驱摄像头  图像渲染: SDL库  开发语言: C语言   效果展示: 3.摄像头应用框架V4L2示例 #include <stdio.h> #include <sys/types.h> #include <sys/stat.h&

weixin_44453694的博客 1912
上一篇: 树莓派字符驱动
下一篇: STM32CubeMX 学习笔记 STM32F103C8T6
init_hello
博客等级 码龄6年 2粉丝 9原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值