人脸识别

  • 准备安装的东西
  • 使用mjpg—streamer获得人脸识别比对照片
  • 用处功能
  • 实际问题处理

准备安装的东西

1.安装mjpg-streamer
链接: 树莓派3代 B型 Cortex-A53安装实现MJPG-streamer.
2.安装curl、openssl
链接: 树莓派学习:ARM-Linux搭建https的访问环境(curl、openssl).
3.安装wget

  • sudo apt-get update
  • sudo apt-get install wget
  • wget --version

使用mjpg—streamer获得人脸识别比对照片

//运行start.sh,打开摄像头//
system("/home/pi/mjpg-streamer/mjpg-streamer-experimental/start.sh");
//获得访问者实时照片//
system("wget http://192.168.43.125:8080/?action=snapshot -O ./interviewer.jpg");
//获得照片Base64(平台需要这个)
char *basepic2 = getpictureBase("interviewer.jpg");

实际运用中,使用了线程,以下是我的代码

#include <stdio.h>
#include <curl/curl.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>
#include <pthread.h>
typedef unsigned int bool;size_t readData(void *ptr,size_t size,size_t nmemb,void *stream)
{char buf[1024]={'\0'};strncpy(buf,ptr,1024);//printf("%s\n",buf);if(strstr(buf,"是")!=NULL){printf("the same people\n");}else {printf("It's two different people\n");}
}char *getpictureBase(char *picturepath)
{char *cmd =(char *)malloc(128);sprintf(cmd,"base64 %s > basefile",picturepath);system(cmd);free(cmd);int fp=open("./basefile",O_RDWR);int nut=lseek(fp,0,SEEK_END);lseek(fp,0,SEEK_SET);char *getbase =(char *)malloc(nut+2);memset(getbase,'\0',nut+2);read(fp,getbase,nut);close(fp);system("rm basefile -rf");return getbase;
}
void *open_mjpg()
{system("/home/pi/mjpg-streamer/mjpg-streamer-experimental/start.sh");pthread_exit(NULL); return NULL;
}bool postUrl(char *filename)
{CURL *curl;CURLcode res;char *postString ;pthread_t mjpg_pthid;char *key="xxxxxx";char *secret="xxxxxxxx";int  typeId=21;char *format="xml";char *basepic1 = getpictureBase("host.jpg");//printf("pic1=%s\n",basepic1);////运行start.sh,打开摄像头//pthread_create(&mjpg_pthid,NULL,open_mjpg,NULL);//获得访问者实时照片//system("wget http://192.168.43.125:8080/?action=snapshot -O ./interviewer.jpg");//获得照片Base64(平台需要这个)char *basepic2 = getpictureBase("interviewer.jpg");//printf("pic2=%s\n",basepic2);pthread_cancel(mjpg_pthid);int length = strlen(key)+strlen(secret)+strlen(basepic1)+strlen(basepic2);postString=(char *)malloc(length);memset(postString,'\0',length);//将所有信息拼接在一起(无论是整型还是字符串),由postString里存储要发送信息//sprintf(postString,"&img1=%s&img2=%s&key=%s&secret=%s&typeId=%d&format=%s", basepic1,basepic2,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 ");   // 指定urlcurl_easy_setopt(curl, CURLOPT_WRITEFUNCTION,readData);res = curl_easy_perform(curl);printf("OK:%d\n",res);curl_easy_cleanup(curl);}return 1;
}
int main(void)
{postUrl("/tmp/post.html");return 0;
}//调用curl_global_init()初始化libcurl//调用curl_easy_init()函数得到 easy interface型指针//调用curl_easy_setopt()设置传输选项//根据curl_easy_setopt()设置的传输选项,实现回调函数以完成用户特定任务
//调用curl_easy_perform()函数完成传输任务//调用curl_easy_cleanup()释放内存
//调用curl_global_cleanup()清理掉初始化

注意:
编译时:gcc xxxx.c -lcurl -lssl -lcrypto -lpthread

用处功能

可融入智能家居项目(简易),实现人脸识别开门
硬件:继电器模块、电磁锁、若干导线和树莓派

实际问题处理

在用system打开mjpg时,发生错误:

error:30: ./mjpg_streamer: not found

实则为:start.sh文件未进行相对路径的更换及更换为绝对路径,使得未能在其他文件目录下,打开摄像头。

解决方法:将相对路径修改为绝对路径,使得在任意工作目录下调用start.sh文件,都能够成功开启摄像头进行监控。(此为树莓派上)

./mjpg_streamer -i "./input_raspicam.so" -o "./output_http.so -w ./www"
/home/pi/mjpg-streamer/mjpg-streamer-experimental/mjpg_streamer -i "/home/pi/mjpg-streamer/mjpg-streamer-experimental/input_raspicam.so" -o "/home/pi/mjpg-streamer/mjpg-streamer-experimental/output_http.so -w /home/pi/mjpg-streamer/mjpg-streamer-experimental/www"

C语言人脸识别——翔云平台调用(含wget安装)相关推荐

  1. 智能家居(7) —— 人脸识别 翔云平台编程使用(编译openSSL支持libcurl的https访问、安装SSL依赖库openSSL)

    目录 一.祥云人工智能开放平台 二.编译openSSL支持libcurl的https访问 安装SSL依赖库openSSL(使用工具wget) curl库重新配置,编译,安装 三.编程实现人脸识别 翔云 ...

  2. 智能家居——人脸识别 翔云平台(配置ssl和下载OpenSSL)

    文章目录 一.祥云人工智能开放平台 二.编译openSSL支持libcurl的https访问 (1)libcurl的https访问问题 (2)安装SSL依赖库openSSL(使用工具wget) (3) ...

  3. 人脸识别--翔云API

    目录 一.购买人脸识别接口 二.了解base64编码 三.通过post实现人脸识别 一.购买人脸识别接口 进入翔云官网购买人脸识别的接口,得到一个key和secret,我们要用到这两个参数才能访问到人 ...

  4. 智能家居(七) —— 人脸识别 翔云平台编程使用(编译openSSL支持libcurl的https访问、安装SSL依赖库openSSL)

    人工智能OCR识别平台介绍 OCR (Optical Character Recognition,光学字符识别) 百度搜索OCR识别,可以发现有很多大厂都在做这个项目,比如百度OCR,腾讯OCR,科大 ...

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

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

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

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

  7. 易语言人脸识别算法源码

    易语言人脸识别+学习算法,算是易语言首发的了吧 可以先学习之后给人脸编号,然后给定图片让机器识别,机器会返回和已经学习的人脸相似度,大于设定的阀值就可以认为是同一个人 下载地址:https://6yu ...

  8. 小程序加入人脸识别_【提示】@车墩志愿者们 身份证+人脸识别 “志愿云自助服务”微信小程序上线 再也不用担心忘记用户名密码了...

    本微信转自"文明松江" 全国志愿服务信息系统上线"志愿云自助服务"微信小程序,通过身份证比对和人脸识别技术,"上海志愿者网"注册志愿者可自助 ...

  9. 3D人脸识别——点云转化为可训练的图片

    1.场景介绍 3D人脸点云不容易直接训练,需要将其转化为二维图片.大部分论文是这样做的:首先求出每个点所在平面的法向量,发向量与水平面和竖直平面的夹角组成两个通道,深度图是一个通道.然后,将这三个通道 ...

最新文章

  1. jmeter最大请求数_jmeter单机最大并发数_动漫台
  2. 朋友圈 H5 进化简史
  3. apachacxf项目使用@WebService报错
  4. python中的类装饰器应用场景_这是我见过最全面的Python装饰器教程了!
  5. c语言编程三问三答,c语言程序编程
  6. 第一站---大连---看海之旅
  7. Dubbo2.6.5入门——管控台的安装
  8. Linux备份策略研究
  9. 小程序模拟请求本地json数据文章合集
  10. vbs 一些学习资料
  11. 《Spring1之 第一次站立会议(重发)》
  12. 足不出户逛里约 神马搜索推出奥运会蓝光页面
  13. access 跳过一次for循环_Java中的循环结构
  14. 多线程_18_并发_同步_快乐影院_快乐火车票
  15. 【CentOS8.0开启防火墙放行8081端口】
  16. 【技能积累】写邮件时的常用表达
  17. 北京中医药大学本科毕业论文答辩PPT模板
  18. (转载)深度工作:充分使用每一份脑力
  19. 竣达技术UPS微信云监控基本方案
  20. 实验第五节——channel相关操作

热门文章

  1. bWAPP XSS
  2. Python与或运算
  3. ubuntu虚拟机使用笔记——5、vim保存并退出
  4. 开源Redis管理工具: ManGe-Redis
  5. 30岁女生给20岁女生的建议,最后一条最重要
  6. OpenCV库的学习笔记(三)Changing Colorspaces
  7. 使用prctl为线程命名
  8. 100314.间谍网络
  9. python定义一个字符串变量_python怎么创建字符串变量
  10. sed命令删除前100行里匹配的行