基于翔云OCR云平台的人脸识别(2)

项目思路

raspistill命令的相关参数说明

-v:调试信息查看
-w:图像宽度
-h:图像高度
-rot:图像旋转角度,只支持 0、90、180、270 度(这里说明一下,测试发现其他角度的输入都会被转换到这四个角度之上)
-o:图像输出地址,例如image.jpg,如果文件名为“-”,将输出发送至标准输出设备
-t:获取图像前等待时间,默认为5000,即5秒

raspistill -o test.png -w 400 -h 400 -t 1000
摄像头拍摄分辨率为400x400的图片,等待时间为1s,保存在当前文件夹的test.png

OCR平台返回的字符串格式

<?xml version="1.0" encoding="UTF-8"?>
<data><message><status>0</status><value>比对完成</value></message><cardsinfo><card type="21"><item desc="判定值"><![CDATA[0.9075357]]></item>  //对比率为0.9075357<item desc="判定结果"><![CDATA[是]]></item>    //判断为是同一个人</card></cardsinfo>
</data>

例程

#include <stdio.h>
#include <curl/curl.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>#define true 1
#define false 0
typedef unsigned int bool;char post_info[500];
size_t ReadHandler( void *ptr, size_t size, size_t nmemb, void *stream)
{int buf_size=size*nmemb;char *buf=malloc(buf_size+1);memset(buf,'\0',buf_size+1);strncpy(buf,ptr,buf_size);//printf("%s\n",buf);strcat(post_info,buf);free(buf);return buf_size;
}
char* getImgBase64(char *img_name)
{int fd;    int size=0;char cmd[30];char *img_buf;sprintf(cmd,"base64 %s >tmpfile.txt",img_name);//将图片Base64流保存到tmpfile.txt文件if(system(cmd)==256){return NULL;}fd=open("tmpfile.txt",O_RDWR);size=lseek(fd,0,SEEK_END);//printf("size:%d\n",size);img_buf=malloc(size+2);memset(img_buf,'\0',size+2);lseek(fd,0,SEEK_SET);read(fd,img_buf,size);close(fd);//printf("%s\n",img_buf);system("rm tmpfile.txt");return img_buf;
}
char* getCamBase64()
{int fd;int size=0;char cmd[30];char *img_buf;system("raspistill -o cambuf.png -w 400 -h 400 -t 1000");//摄像头拍摄sleep(1);sprintf(cmd,"base64 %s >tmpfile.txt","cambuf.png");//将图片Base64流保存到tmpfile.txt文件if(system(cmd)==256){return NULL;}fd=open("tmpfile.txt",O_RDWR);size=lseek(fd,0,SEEK_END);//printf("size:%d\n",size);img_buf=malloc(size+2);memset(img_buf,'\0',size+2);lseek(fd,0,SEEK_SET);read(fd,img_buf,size);close(fd);//printf("%s\n",img_buf);system("rm tmpfile.txt");system("rm cambuf.png");return img_buf;
}bool postUrl(char* img1_name)
{CURL *curl;CURLcode res;char *PostString;char *img1;char *img2;char *key="yourkey";char *secret="yoursecret";int  typeId=21;char *format="xml";char *info_loop=NULL;float result_rate=0;img1=getImgBase64(img1_name);img2=getCamBase64();if((img1==NULL)){printf("img dont exist!\n");return false;}PostString=malloc(strlen(img1)+strlen(img2)+strlen(key)+strlen(secret)+sizeof(typeId)+strlen(format));sprintf(PostString,"&img1=%s&img2=%s&key=%s&secret=%s&typeId=%d&format=%s",img1,img2,key,secret,typeId,format);curl = curl_easy_init();if (curl){curl_easy_setopt(curl, CURLOPT_URL, "https://netocr.com/api/faceliu.do");curl_easy_setopt(curl, CURLOPT_POSTFIELDS,PostString);curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, ReadHandler);res = curl_easy_perform(curl);//printf("OK:%d\n",res);curl_easy_cleanup(curl);if((info_loop=strstr(post_info,"判定值"))!=NULL){if((info_loop=strstr(info_loop,"CDATA"))!=NULL){info_loop+=6;info_loop = strtok(info_loop, "]");result_rate=atof(info_loop);printf("the result rate:%f\n",result_rate);if(result_rate>0.75){printf("the result:same person\n");}else{printf("the result:different person\n");}}else{printf("get result error!\n");}}else{printf("get result error!\n");}}free(img1);free(img2);return true;
}
int main(int argc,char* argv[])
{memset(post_info,'\0',500);if(argc!=2){return -1;}curl_global_init(CURL_GLOBAL_ALL);postUrl(argv[1]);curl_global_cleanup();
}

运行程序

./mycurl xxx (xxx为参考图片文件)

pi@raspberrypi:~/Desktop/mycurl/test $ ./mycurl hui.png
the result rate:0.874296
the result:same person

基于翔云OCR云平台的人脸识别(2)相关推荐

  1. 基于翔云OCR云平台的人脸识别(1)

    基于翔云OCR云平台的人脸识别 本节通过翔云OCR云平台来实现人脸识别.调用人脸对比API,通过https post方式向云服务器提交两张需要对比的图片Base64流以及其他信息,云服务器处理后返回判 ...

  2. C语言实现基于翔云平台的人脸识别demo1(linux)

    C语言实现基于翔云平台的人脸识别demo1(linux) 实现的目标 安装openssl第三方的库 安装libcurl第三方的库 购买使用翔云平台人脸识别的次数 libcurl的使用 **参考以下博文 ...

  3. C语言实现基于翔云平台的人脸识别demo2(树莓派)

    C语言实现基于翔云平台的人脸识别demo2(树莓派3B) 实现目标 树莓派安装mjpg-streamer 在树莓派下依次执行以下指令 修改start.sh文件(用来开启摄像头进行监控) A:树莓派摄像 ...

  4. 基于树莓派(C语音)实现人脸识别(翔云平台)

    1.树莓派中安装摄像头并测试摄像头 1.1.安装mjpg-streamer 在CRT中依次输入一下指令 sudo apt-get update #更新软件列表 sudo apt-get upgrade ...

  5. android 人脸识别 方法研究,基于Android平台的人脸识别技术研究

    摘要: 在计算机视觉与模式识别领域中,人脸检测与识别技术是一个非常热门的研究课题,同时也具备非常广阔的商业价值.在诸多的目标检测算法中,基于AdaBoost算法的目标检测方法具有检测速度快,检测效果好 ...

  6. 基于百度AI开放平台的人脸识别

    文章目录 前言 人脸识别流程图 一.注册账号 二.创建应用 三.下载SDK文件 四.创建工具类 五.创建用于人脸识别的网页 1.引入css文件 2.创建注册按钮 3.创建模态框,用于捕捉人脸 4.引入 ...

  7. GB28181/RTSP/Onvif/HikSDK/Ehome协议视频共享平台EasyCVR人脸识别系统助力打造智慧安检系统

    一.项目需求 随着经济及交通的发展,海关和陆路边境口岸之间每天都有大量的人和货物在此周转,随之而来的安检工作也越来越重要,检查藏匿的违禁品和危险品一直是相关安全部门的重要工作.一套人行.物检等全方位的 ...

  8. 基于深度学习的端到端人脸识别技术:全面调研

    44页,共计371篇参考文献.本文全面介绍了端到端深度学习人脸识别技术,包括人脸检测,人脸预处理和人脸表征等方向,详细介绍了最新的算法设计,评估指标,数据集,性能比较等. The Elements o ...

  9. 国标GB28181(EasyGBS)/RTSP/HIKSDK/EHOME协议视频智能分析平台EasyCVR人脸识别智能分析功能拓展

    计算机视觉技术作为人工智能(AI)技术发展的重要应用之一已经在我们的日常生活中屡见不鲜,AI人脸识别智能分析是基于人的脸部特征信息进行身份识别的一种生物识别技术,通常采用摄像机或摄像头采集含有人脸的图 ...

最新文章

  1. 集成的分层强化学习,让人工智能在解决智能问题时表现得更聪明
  2. 纽约大学Gary Marcus发文指出AlphaZero「被夸大」,强调重视人工智能「先天因素」
  3. Eclipse用法:自动生成get和set方法
  4. 谷歌发布机器学习云平台 开放语音识别API
  5. [Step By Step]SAP HANA PAL多项式回归预测分析Polynomial Regression编程实例FORECASTWITHPOLYNOMIALR(预测)...
  6. 知网文档下载中的CAJ和PDF有什么区别?
  7. SECS/GEM如何开发
  8. android 后台运行管理,Android 后台运行白名单,优雅实现保活
  9. ATTiny85 Arduino开发环境搭建及使用
  10. MATLAB如何打开chm文件
  11. Win10 快速检查修复系统方法
  12. css 设置手机浏览器背景图片填充整个页面的小问题级解决方法
  13. 渗透测试技巧总结更新篇2
  14. 微信小程序发布时需要校验违法违规内容、图片,Java后端接口
  15. 我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。 百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
  16. fastjson 序列化问题:Comparison method violates its general contract
  17. 2021美赛B题翻译
  18. CTF-60 writeup
  19. [VB.NET源码]销售管理系统
  20. ANSYS Workbench结构动力学专题视频教程

热门文章

  1. 进程调度算法-时间片轮转、最高优先级和多级反馈队列调度算法
  2. POJ h0248.海贼王之伟大航路
  3. Ubuntu下添加用户到指定用户组
  4. springBoot项目在Linux中快速启动
  5. lisp调用qleader端点_[分享]lisp中可用command调用的函数全集!!!!
  6. 代码块:在Java中用{}括起来的代码
  7. C语言 | 最大公约数最小公倍数
  8. int~long long表示最大、最小数字
  9. 科创企业落地,海内外高层次人才引进
  10. Linux——简单脚本编写及应用