编程实现人脸识别

1.更改url

用翔云平台下的人脸识别的API文档
编程实现人脸识别_第1张图片
把他贴到url中:
编程实现人脸识别_第2张图片

2.定义参数 (根据平台给定的这些串口接收参数来定义)

编程实现人脸识别_第3张图片
key和secret在这里找:

编程实现人脸识别_第4张图片
编程实现人脸识别_第5张图片

3.指定post内容

编程实现人脸识别_第6张图片
把这部分定义成一个postString
编程实现人脸识别_第7张图片

4.字符串的拼接

编程实现人脸识别_第8张图片

sprintf函数调用的主要用途就是把一个字符串放在一个已知的字符数组里去

5.cookie先不动,最终进行请求,然后打印下请求的结果

编程实现人脸识别_第9张图片

6.思路:main函数进来,posturl(不传参了,没啥意义)

编程实现人脸识别_第10张图片
sprintf拼接字符串
然后curl_easy_init()初始化
设置cookie; 要上传的字段;人脸识别的网址;数据回来后去读数据;请求,打印请求结果。
编程实现人脸识别_第11张图片

并且把真正有效的字符打出来
编程实现人脸识别_第12张图片

编译运行

结果-1代表失败了,没有和翔云后台接通正常来说应该是200。

在这里插入图片描述
原因是电脑没有装OpenSSL.
解决办法:编译时加一个环境变量,指定Openssl的位置,编译时加这个选项(with ssl)
因为HTTPS协议是由SSL+HTTP协议构建的一种协议
ssl的作用:
由于接口是https开头的(人脸识别走的是http通信),https协议是在http和tcp之间多加的一层,进行身份验证和数据加密。身份验证就是key和secret。
但我们编译出来的仅支持http不支持https。

所以:
打开 docs/INSTALL.md (这个库的说明书),知道了想编译需要加ssl
编程实现人脸识别_第13张图片
加ssl编译:
在这里插入图片描述
但提示编译错误,因为没有OpenSSL库

安装openssl库

安装openssl库指令:wget https://www.openssl.org/source/openssl-1.1.1a.tar.gz

解压:tar xvf openssl…
得到:
编程实现人脸识别_第14张图片
一般也是先看一下READ.ME
然后make
编程实现人脸识别_第15张图片
接着,sudo make install
编译成功后,回到curl下,继续编译:
编程实现人脸识别_第16张图片
(这样 系统里就有ssl了)

再make
编程实现人脸识别_第17张图片
再make_install
编程实现人脸识别_第18张图片
再回到handler下
编程实现人脸识别_第19张图片
编程实现人脸识别_第20张图片
编译运行:
编程实现人脸识别_第21张图片
但是说产品类型错误,因为我们写demo2的时候没上传图片

如何上传图片

1.首先:平台规定img1和img2是要以字符串(base64流的形式)上传的。
编程实现人脸识别_第22张图片
2.平时的图片一般是以jpg形式(压缩过的)存在的。bmp形式的是没压缩过的。
一张图片由很多个小的颜色色块组成,每种颜色的色块都有对应的字符串,可以把这些字串转成base64的编码

3.找两张人物图片复制到linux下
(先放到共享文件夹里,在这里输入指令sudo cp lhc.jpg /home/jmh/ 和
sudo cp lhc2.jpg /home/jmh/ 给他俩复制到工作目录下)

4.linux下自带的把jpg形式的图片转换成base64流的指令:base 64
编程实现人脸识别_第23张图片
回到httpHandler文件夹下
把两张图片贴过来:
在这里插入图片描述
调用system函数,把这张图生成的数据导入到tmpFile里
编程实现人脸识别_第24张图片
然后编译运行,生成了这个tmpFile文件。然后就可以通过读文件的形式来操作了

你可能感兴趣的:(智能家居,服务器,linux,运维)