From 63cb7caf52a93a3f14a48ac3fdabd84d2c5abb07 Mon Sep 17 00:00:00 2001 From: aixiao Date: Fri, 5 Nov 2021 17:49:09 +0800 Subject: [PATCH] Format C language code --- BaiduAIface.c | 188 -------------------------------------------------- 1 file changed, 188 deletions(-) delete mode 100644 BaiduAIface.c diff --git a/BaiduAIface.c b/BaiduAIface.c deleted file mode 100644 index e1463ee..0000000 --- a/BaiduAIface.c +++ /dev/null @@ -1,188 +0,0 @@ -#include -#include -#include -#include -#include "cJSON.h" -#include -#include -#include -#include - -size_t access_token_callback(void *ptr, size_t size, size_t nmemb, void *stream) -{ - char *buf = (char *)malloc(size * nmemb + 8 ); - memset(buf,'\0', size * nmemb + 8); - strncpy(buf, ptr, size * nmemb); - cJSON *json= cJSON_Parse(buf); - char *access_token_result = (char *)stream; - strncpy(access_token_result, cJSON_GetObjectItem(json, "access_token")->valuestring, 128); - //printf("stream:%s\n",(char *)stream); - cJSON_Delete(json); - free(buf); - - return size * nmemb; -} - -int post_access_token(char *access_token) -{ - CURL *curl; - CURLcode result_code; - int error_code = 0; - char url[256] = {0}; - char access_token_url[] = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials"; - char AK[] = "vEcmEHNhIBfmA5qGs5TtcA8R"; - char SK[] = "G4fk4L8p9QQGMqui4MkMWZ0fGkwWQoKE"; - char access_token_result[128] = {0}; - - curl = curl_easy_init(); - if (curl) { - //std::string url = access_token_url + "&client_id=" + AK + "&client_secret=" + SK; - sprintf(url,"%s&client_id=%s&client_secret=%s",access_token_url,AK,SK); - //printf("url: %s\n",url ); - curl_easy_setopt(curl, CURLOPT_URL, url); - curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0); - curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0); - curl_easy_setopt(curl, CURLOPT_WRITEDATA, access_token_result); - curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, access_token_callback); - result_code = curl_easy_perform(curl); - if (result_code != CURLE_OK) { - fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(result_code)); - return 1; - } - //printf("access_token_result:%s\n",access_token_result); - strcpy(access_token, access_token_result); - curl_easy_cleanup(curl); - error_code = 0; - } else { - fprintf(stderr, "curl_easy_init() failed."); - error_code = 1; - } - - return error_code; -} - -size_t faceMatch_callback(void *ptr, size_t size, size_t nmemb, void *stream) { - // 获取到的body存放在ptr中,先将其转换为string格式 - char *buf = (char *)malloc(size * nmemb + 8 ); - memset(buf,'\0',size * nmemb + 8); - strncpy(buf, ptr, size * nmemb); - - cJSON *json = cJSON_Parse(buf); - printf("data:%s\n", cJSON_Print(json)); - if(strstr(cJSON_Print(json),"SUCCESS") ==NULL) { - *((double *)stream) = 0; - } else { - cJSON *result = cJSON_GetObjectItem(json, "result"); - //printf("data:%s\n",cJSON_Print(result)); - double *faceMatch_result = (double *)stream; - *faceMatch_result = cJSON_GetObjectItem(result, "score")->valuedouble; - //printf("stream:%f\n",*faceMatch_result); - } - cJSON_Delete(json); - free(buf); - - return size * nmemb; -} -/** - * 人脸对比调用成功返回0,发生错误返回其他错误码 - */ -int post_faceMatch(double *faceMatch, char *access_token, char *file1, char *file2) -{ - //std::string url = request_url + "?access_token=" + access_token; - char url[256] = {0}; - char request_url[] = "https://aip.baidubce.com/rest/2.0/face/v3/match"; - sprintf(url,"%s?access_token=%s", request_url, access_token); - - char *getbase64(char *photoname); - char image[] = "\"image\": "; - char image_type[] = "\"image_type\": \"BASE64\""; - char *image1_base64 = getbase64(file1); - char *image2_base64 = getbase64(file2); - char *params = (char *)malloc(strlen(image1_base64) + strlen(image2_base64) + 2 * strlen(image) + 2 * strlen(image_type) + 128 ); - sprintf(params, "[{%s\"%s\", %s}, {%s\"%s\", %s}]", image, image1_base64, image_type, image, image2_base64, image_type); - cJSON *json = cJSON_Parse(params); - //printf("%s\n",cJSON_Print(json)); - //printf("param : %s\n",params); - CURL *curl = NULL; - CURLcode result_code; - int is_success; - curl = curl_easy_init(); - double faceMatch_result; - if (curl) { - curl_easy_setopt(curl, CURLOPT_URL, url); - curl_easy_setopt(curl, CURLOPT_POST, 1); - struct curl_slist *headers = NULL; - headers = curl_slist_append(headers, "Content-Type:application/json;charset=UTF-8"); - curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); - //curl_easy_setopt(curl, CURLOPT_POSTFIELDS, params); - curl_easy_setopt(curl, CURLOPT_POSTFIELDS, cJSON_Print(json)); - curl_easy_setopt(curl, CURLOPT_WRITEDATA, &faceMatch_result); - curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, faceMatch_callback); - result_code = curl_easy_perform(curl); - - free(image1_base64); - free(image2_base64); - free(params); - cJSON_Delete(json); - if (result_code != CURLE_OK) { - fprintf(stderr, "curl_easy_perform() failed: %s\n", - curl_easy_strerror(result_code)); - is_success = 1; - return is_success; - } - *faceMatch = faceMatch_result; - curl_easy_cleanup(curl); - is_success = 0; - } else { - fprintf(stderr, "curl_easy_init() failed."); - is_success = 1; - } - - return is_success; -} - -char *getbase64(char *photoname) -{ - char order[128] = {0}; - char file[32] = {0}; - char *base64 = NULL; - - sprintf(order,"base64 %s > %s_base64", photoname, photoname); - system(order); - sprintf(file,"%s_base64", photoname); - int fd = open(file, O_RDWR); - int len = lseek(fd,0, SEEK_END); - lseek(fd, 0, SEEK_SET); - base64 = (char *)malloc(len+1); - read(fd, base64, len); - base64[len] = '\0'; - - //printf("%d\n",strlen(base64)); - return base64; -} - -int main(int argc, char *argv[], char **envp) -{ - if (argc != 3) { - printf("%s file1 file2\n", argv[0]); - exit(1); - } - - char access_token[128]; - double faceMatch = 0; // 面部匹配 - - post_access_token(access_token); - //printf("access_token: %s\n", access_token); - - post_faceMatch(&faceMatch, access_token, argv[1], argv[2]); - //printf("faceMatch : %f \n",faceMatch); - - if(faceMatch > 90) { - printf("相似\n"); - } else { - printf("不相似\n"); - } - - - return 0; -} \ No newline at end of file