人脸识别上传ONENET

人脸识别上传ONENET -python

1.介绍

​ 通过OPENCV来识别到人头从而进行拍照保存本地然后再上传到ONENET平台!

2.人脸识别

import numpy as np
import cv2
from time import sleep
import serial
import os
import requests
import threading
 
#Cascades存放分类器的文件夹
#引入分类器
faceCascade = cv2.CascadeClassifier('/home/pi/cadata/haarcascade_frontalface_default.xml')
#级联分类器有很多种文件可以进行AI检测,haarcascade_frontalface_default.xml就是检测人脸
def face():
    cap = cv2.VideoCapture(0)
    cap.set(3,640) # set Width
    cap.set(4,480) # set Height
    i=0
    #t=serial.Serial('/dev/ttyAMA0',115200,timeout=0.5)
    while True:
        ret, img = cap.read()
        #vector<Rect> objects;
        img = cv2.flip(img, -1)#翻转图像
        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#转换到灰度图(人脸识别和检测都是在灰度图下进行的)
        faces = faceCascade.detectMultiScale(
            gray,            #图像
            scaleFactor=1.5, #图片缩小的比例
            minNeighbors=5,  #每次检测时,对检测点(Scale)周边多少有效点同时检测,类似于卷积算子吧     
            minSize=(50, 50) #人脸的最小范围,如果比20*20像素小忽略
        )#进行人脸检测
        if i==0:
            flag=0
        else:
            flag=count
        i=1
        count=0
        
        
        #x,y,w,,h为得到的人脸的数据
        for (x,y,w,h) in faces:
            count+=1
            cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)#框脸
            roi_gray = gray[y:y+h, x:x+w]    
            roi_color = img[y:y+h, x:x+w]
        if count!=0 and (flag!=count ):
            #cv2.imwrite("/home/pi/dataest/User." +"myface"+".jpg", gray[y:y+h,x:x+w])
            cv2.imwrite("/home/pi/dataest/User." + 'myface' + ".jpg", gray[4:480,3:640])#保存图片

            print('face number:%d',count)
            t.write((str(count)).encode())
          
            
        
        cv2.imshow('video',img)        #显示
        k = cv2.waitKey(20) & 0xff
        if k == 27: # press 'ESC' to quit
            break
        
            

     
    cap.release()
    cv2.destroyAllWindows()

3.上传ONENET平台

参考ONENET平台的文档中心的HTTP部分

import numpy as np
import cv2
from time import sleep
import serial
import os
import requests
import threading
 

#OneNet address
url ="http://api.heclouds.com/bindata"
#OneNet HEADERS
headers={
    "Content-Type": "image/jpg",
    "api-key": "YOUR API-KEY"
    }
#device_id;datastream_id;
querystring ={
        "device_id":"YOUR DEVICE-ID","datastream_id":"YOUR DATASTREAM_ID"
    }
def send():
    while True:
        sleep(5)
        with open("/home/pi/dataest/User." + 'myface' + ".jpg","rb")as f:
                 requests.post(url,params=querystring,headers=headers,data=f)
                    print("success")

4.创建线程

为了实现能够同时识别和上传数据

import threading
threads=[]
t1=threading.Thread(target=face)
threads.append(t1)
t2=threading.Thread(target=send)
threads.append(t2)

5.主运行函数

启动线程,开始运行

if __name__=='__main__':
    for t in threads:
        t.setDaemon(True)
        t.start()
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1,开发板提供强大的WEB访问和控制功能,通过浏览器可以实现开发板的控制和操作(包括视频监控,音乐播放和继电器控制等功能) 2,支持android手机app视频监控,提供手机APP源代码。支持VLC/1K播放器(IOS),OPlayer(Android)等软件直接播放开发板MJPG视频,只要在这些软件上输入开发板HTTP地址即可。 3,支持PC软件监控,实测视频参考(支持PC安装VLC播放器直接播放开发板MJPG视频,只要在VLC播放器中输入开发板HTTP地址即可): 4,支持OneNet云平台EDP协议,轻松实现视频监控,所有代码开源,通过网页或者APP可轻松访问公开的摄像头数据。 5,支持阿里云物联网平台,支持TLS方式接入(已经移植了MbedTLS协议栈),实现MQTT消息的订阅与发布,数据更安全。 6,支持百度AI平台人脸识别技术,人脸识别应用实现为一个人脸识别控制继电器开关的功能。测试时,将开发板摄像头对准人脸(人脸相隔40~60cm),如果开发板检查到当前人脸和人脸库中的匹配,则会使继电器闭合,否则断开继电器。 7,支持百度AI平台语音识别技术语音合成技术,应用的功能为:当按下开发板上的按键后,开发板开始捕捉2秒长度的PCM音频数据,并发送给AI平台识别成文字;同时开发板将识别出来的文字发送给AI语音合成接口,获得一段MP3并播放;同时开发板会检测合成的文字中有没有“开灯”“关灯”字符串,有的话则控制继电器做出相应动作。另一个语音合成功能是,我们可以使用串口发送数据到开发版,开发板将收到的文字请求AI平台,并获得一段MP3并播放 8,支持百度AI平台物体识别技术,物体识别功能为:开发板周期性的利用摄像头捕捉的图像并请求AI平台进行物体识别,同时将识别出来的文字使用百度语音合成功能合成为MP3并播放出来

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值