借助工具实现
图像识别靠自己做成比较费劲且识别率不高,故需借助一些工具,我们利用翔云智能平台,百度搜索翔云(因为翔云便宜一些。。。)
1毛钱即可购买
仅限于第一次啊
代码测试
#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 buf[1024] = {'\0'};
size_t readData( void *ptr, size_t size, size_t nmemb, void *stream)
{
strncpy(buf, ptr, 1024);
//printf("============================get Data =======================\n");
//printf("%s\n",buf);
}
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 *key = "UZyn39RsFvn4jRmb3*******";
char *secret = "fe48de9671d74e2b8c7f06abe6*****";
int typeId = 21;
char *format = "xml";
char *postString;
char *bufPic1 = getPicBase64FromFile("./zy1.jpg");
char *bufPic2 = getPicBase64FromFile("./zy2.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_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); //将返回的http头输出到fp指向的文件
res = curl_easy_perform(curl);
printf("Ok: %d\n",res);
if(strstr(buf, "是") != NULL){
printf("the same Person\n");
}else{
printf("diff Person\n");
}
curl_easy_cleanup(curl);
}
return true;
}
int main(void)
{
//getUrl("/tmp/get.html");
postUrl();
}
编译的时候,你会发现无法编译,此时你需要安装openssl库
1.准备好opensll 压缩包
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
安装
sudo make install
3.更新curl库
cd curl-7.71.1/
./configure --prefix=$PWD/_install --with-ssl
make
make install
到此就可以回到人脸识别代码所在文件夹进行编译了