Linux 实现人脸识别
#include <>
#include <curl/>
#include<>
#include<>
#include <sys/>
#include <sys/>
#include <>
#include <>
#define true 1
#define false 0
typedef unsigned int bool;
char Buf[12000];
size_t readData( void *ptr, size_t size, size_t nmemb, void *stream)
{
strncpy(Buf,ptr,1024);
printf("============================get data============================");
printf("%s\n",Buf);
}
//将图片转换为base64格式
char *readBase64(char *filePath)
{
char *bufPic;
char cmd[128];
memset(cmd,'\0',128);
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);
bufPic = memset(bufPic,'\0',filelen+2);
read(fd,bufPic,filelen);
system("rm -f tmpFile");
close(fd);
return bufPic;
}
bool postUrl()
{
CURL *curl;
CURLcode res;
char *pointData;
char *key = "UbkpH8e8ydNsj6uhHUecDu";
char *secret = "1026b30b3cb7468e9d301afe73dce9f9";
int typeId = 21;
char *format = "xml";
char *bufPic1;
char *bufPic2;
bufPic1 = readBase64("./");
bufPic2 = readBase64("./");
int len = strlen(key)+strlen(secret)+strlen(bufPic1)+strlen(bufPic2)+128;
pointData = (char *)malloc(len);
memset(pointData,'\0',len);
sprintf(pointData,"&img1=%s&img2=%s&key=%s&secret=%s&typeId=%d&format=%s",bufPic1,bufPic2,key,secret,21,format);
//printf("%s\n",pointData);
// int fp =open("./",O_RDWR|O_CREAT,0666);
curl = curl_easy_init();
if (curl)
{
curl_easy_setopt(curl,CURLOPT_POSTFIELDS,pointData);
curl_easy_setopt(curl,CURLOPT_URL,"/api/");
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,readData);
res = curl_easy_perform(curl);
printf("OK:%d\n",res);
if(strstr(Buf, "是") != NULL){
printf("the person same\n");
}
else{
printf("the person different\n");
}
curl_easy_cleanup(curl);
}
return true;
}
int main(void)
{
postUrl();
}