香橙派基于翔云的人脸识别

目录

1.准备工作

 2、编写访问接口的代码,采用python编程访问 

3. 主程序的编写

 4. 运行程序


1.准备工作

  • 注册翔云账号,购买人脸识别接口

  •  访问接口需要的参数

  • key 与 Secret 可以在个人中心查看

  • USB 摄像头测试
  1. 首先将 USB 摄像头插入到香橙派 USB 接口中
  2. 然后通过 lsmod 命令可以看到内核自动加载了下面的模块

     3. 安装 fswebcam

sudo apt update
sudo apt-get install -y fswebcam 

 安装完 fswebcam 后可以使用下面的命令来拍照

sudo fswebcam -d /dev/video0  --no-banner -r 1280x720 -S 5 ./image.jpg  
 -d                         选项用于指定 USB 摄像头的设备节点
 --no-banner        用于去除照片的水印
 -r                          选项用于指定照片的分辨率
 -S                         选项用设置于跳过前面的帧数
 ./image.jpg          用于设置生成的照片的名字和路径
拍完照后可以将 拍好的图片传到电脑上观看。
注意:在执行程序前需要在执行文件的路径先保存有一张用来识别的图片 
  • 继电器及电磁锁的接线

 2、编写访问接口的代码,采用python编程访问 

#coding=UTF-8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
import requests                    #导包并设置字符编码,因为在py中,出现中文默认会报错
url = r'https://netocr.com/api/facerecog.do'      #翔云api的接口地址
key = r'用户个人的key码,可在个人中心查看'                
secret = r'用户个人的secret码,可在个人中心查看'    
typeId = 21                                      #服务类型
rFormat = r'xml'                             
 
file1 = {'file1': open('file1.jpg', 'rb'),'file2':open('file2.jpg','rb')}
 #要比对的两张图片,file1.jpg,file2.jpg
 
data = {'key':key, 'secret':secret, 'typeId':typeId, 'format':rFormat}
#其他参数的字典
 
r = requests.post(url, files=file1,data = data)  #发起http请求,传参,比对后返回的信息存入r
 
if str(r.text).find('是')!=-1:
    print(1)
else:
    print(0)
#如果返回的信息中带有“是”,则表示比对成功输出1,否则表示比对失败输出0
#如果想查看接口返回的所有数据,用print(r.text)

3. 主程序的编写

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
#include<wiringPi.h>

int main(){

	FILE *p;
	int start;
	int init;
	char cmd[1];

	init=wiringPiSetup ();
	pinMode(16,OUTPUT);
	digitalWrite(16,HIGH);

	if(init==-1)
	{
		printf("init error\n");
	}

	while(1){
		printf("输入1开启人脸识别...\n");
		scanf("%d",&start);
		if (start == 1){
			memset(cmd,'0',1);
			printf("请勿移动........\n");
			system("fswebcam --no-banner ./file2.jpg");        //通过system函数,驱动摄像头拍照
			printf("正在识别,请稍等....\n"); 
			p=popen("python p1.py","r");      //通过popen函数,运行py文件访问接口,获取到人脸识别的结果存入文件流p(1表示识别成功)         
			fread(cmd,1,1,p);      //读取到p文件流中的信息,存入字符数组cmd

			if(strstr(cmd,"1")!=NULL)       
			{
				printf("识别成功!开锁\n");
				digitalWrite(16,LOW);
				delay(4000);
				digitalWrite(16,HIGH);

			}
			else{
				printf("识别错误!\n");
			}

		}
	}
	return 0;
}


 4. 运行程序

 

 识别成功后开锁,开锁后自动恢复成初始状态

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值