基于OCR实现linux环境中的人脸识别

借助工具实现

图像识别靠自己做成比较费劲且识别率不高,故需借助一些工具,我们利用翔云智能平台,百度搜索翔云(因为翔云便宜一些。。。)
在这里插入图片描述

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

到此就可以回到人脸识别代码所在文件夹进行编译了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值