度目视频分析盒子-解决方案-配合门禁使用介绍

度目视频分析盒子-案例第一篇

百度的出品的度目视频分析盒子优点:

  • 价格绝对便宜,3559AV100(4T算力)的价格从500涨到3000多,度目视频分析盒子没有涨价这个要送一波广告:度目视频分析盒子购买链接
  • 检测人脸和抓拍效果很好,抓拍10ms,误抓拍率低
  • 识别效果很好,速度也非常快,应该还有待提升(我还没遇见过)
  • 视频盒子外壳工艺很不错,有点Mac意思
  • 6路基本满帧、8路15帧的样子(性能不错呦)

百度视频分析盒子的不足:主要是易用性问题

  • 没有支持web的配置,连接显示虽然展示效果很Nice,但是实际部署就有点鸡肋了
  • 只有鼠标的配置,不支持键盘,这个添加URL是真的有点恐怖(心惊胆战)

完整的视频分析盒子连接继电器控制闸机操作指南

  • 物料准备
物料名称价格购买链接功能备注
视频分析会3999视频分析盒子人脸识别和抓拍核心物料
交换机700华三poe供电和网络传输华三路由器作为华为当年的子公司质量有保障
继电器20fu植本段内容 z 7 R t c b P G l j x z7RtcbPGljx z7RtcbPGljx打楷τao寶【时间继电器模块延时启动闭合断开倒计时通电开关3.3V5V12V24V】用于接收IO输出控制开门淘宝一大堆这里推荐一个合理的,这里注意要买3.3V或者5V的,因为视频盒子的IO输出是3.3v
摄像头--传输视频流市面上普通摄像头就有可以,这里不做推荐
网线-连接桥梁
  • 整体思路

1.人脸识别通过http接口上报给server(视频盒子主动上报)
2.之后server接受到人脸识别结果控制http发送一个IO请求
3.IO输出的是3.3V的电压数字信号(带不了负载,所以需要继电器)
4.通过继电器接受到3.3V电压,控制继电器闭合
完事
友情提示:测试阶段发送http的IO请求,用万用表测试一下是否3.3v电压
视频分析盒子继电器度目视频分析盒子,里面可以直接配置识别即GPIO输出的信号位和时长、蜂鸣器的控制(视频分析盒子内置蜂鸣器)

这个完全解决,不用server接收到识别的人脸再去控制io造成的网络延迟(极大方便用户作为解决方案)

人脸识别即通过
轮巡,当人脸识别时候,所选择的通道会直接扩展为全屏,突出抓拍人脸的所在位置。
轮巡

http的上传心跳、注册、人脸图及原图、IO控制代码示例

需要安装
1.pydantic
2.fastapi

  • 人脸上报代码块(仅供参考)
# -*- coding: utf-8 -*-
# @time    : 2020/06/03from pydantic import BaseModel
from fastapi import FastAPI
from fastapi.encoders import jsonable_encoder
import timeapp = FastAPI()class SubDeviceInfo_Capture(BaseModel):SubDeviceIP: str = NoneSubDeviceUUID: str = Noneclass DeviceInfo_Capture(BaseModel):DeviceId: str DeviceUUID: str DeviceMac: str DeviceIP: str ChannelNo: int SubDeviceInfo: SubDeviceInfo_Capture = Noneclass CaptureInfo_Capture(BaseModel):SendTime: str CaptureTime: str CaptureCount: int    FacePicture: str = NoneBodyPicture: str = NoneBackgroundPicture: str = Noneclass FaceInfo_Capture(BaseModel):FaceId: int = NoneFaceQuality: int = NoneFacePosition: str = Noneclass Attribute_Capture(BaseModel):Age: int = NoneGender: int = NoneGlasses: int = NoneMask: int = NoneBeard: int = NoneRace: int = Noneclass PersonExtension_Capture(BaseModel):PersonCode1: str = NonePersonCode2: str = NonePersonCode3: str = NonePersonReserveName: str = NonePersonParam1: int = NonePersonParam2: int = NonePersonParam3: int = NonePersonParam4: int = NonePersonParam5: int = NonePersonData1: str = NonePersonData2: str = NonePersonData3: str = NonePersonData4: str = NonePersonData5: str = Noneclass PersonInfo_Capture(BaseModel):PersonId: str = NonePersonName: str = NoneSex: int = NoneIDCard: str = NoneNation: str = NoneBirthday: str = NonePhone: str = NoneAddress: str = NoneSaveTime: str = NoneLimitTime: int = NoneStartTime: str = NoneEndTime: str = NoneLabel: str = NonePersonExtension: PersonExtension_CapturePersonPhoto: str = Noneclass CompareInfo_Capture(BaseModel):AlarmEvent: int = NoneLiveness: int = NoneAttribute: Attribute_Capture = NoneCompareTime: str = NonePersonType: int = NoneVisitsCount: int = NoneSimilarity: str = NonePersonInfo: PersonInfo_Capture = Noneclass Data_Capture(BaseModel):DeviceInfo: DeviceInfo_CaptureCaptureInfo: CaptureInfo_CaptureFaceInfo: FaceInfo_Capture = NoneCompareInfo: CompareInfo_Capture = Noneclass CaptureCBItem(BaseModel):Name: str TimeStamp: int Session: str Data: Data_Captureclass DeviceInfo_HeartBeat(BaseModel):DeviceId: str DeviceUUID: str DeviceMac: str ChannelNo: int WebVersion: str CoreVersion: str VersionDate: str class Data_HeartBeat(BaseModel):DeviceInfo: DeviceInfo_HeartBeatHTTPVersion: str HTTPDate: str HeartbeatCount: int CaptureCount: int class HeartBeatCBItem(BaseModel):Name: str TimeStamp: str Session: strData: Data_HeartBeatclass DeviceInfo_Register(BaseModel):DeviceId: str  = NoneDeviceUUID: str  = NoneDeviceMac: str  = NoneDeviceIP: str  = NoneDeviceType: int  = NoneChannelNum: int  = NoneWebVersion: str  = NoneCoreVersion: str  = NoneVersionDate: str  = Noneclass Data_Register(BaseModel):DeviceInfo: DeviceInfo_Register = NoneHTTPVersion: str = NoneHTTPDate: str = Noneclass RegisterItem(BaseModel):Name: str  = NoneTimeStamp: str  = NoneData: Data_Register    = None# @app.post('/test')
# def calculate(request_data: Item):
#     a = request_data.a
#     b = request_data.b
#     c = a + b
#     # with open('./11.txt', 'w') as f_res:
#     #     f_res.write(str(c))
#     res = {"res":c}
#     return res# def get_value_for_key(raw_value):
#     """
#     """
#     request_info = {}
#     part_str_array = raw_value.split(' ')#     print(part_str_array)
#     for part_str in part_str_array:#         idx_key = part_str.find('=')
#         key_value = part_str[0: idx_key]#         if part_str[-1] == ')':#             idx = part_str.find('(')
#             new_raw_value = part_str[idx + 1 : -1]
#             print('11111', new_raw_value)
#             request_info[key_value] = get_value_for_key(new_raw_value)
#         else:         
#             print('yyy', part_str)  
#             if part_str[-1] != '"' and part_str[-1] != "'" :
#                 print('jjj', part_str[idx_key + 1 : ])
#                 request_info[key_value] = part_str[idx_key + 1 : ]
#             else:
#                 print('fff', part_str[idx_key + 2 : -1])
#                 request_info[key_value] = part_str[idx_key + 2 : -1]        #     return request_info@app.post('/CaptureCB')
def strore_Capturemessage(request_data: CaptureCBItem):# print(str(request_data.Name), str(request_data.Session), flush=True)with open('./CaptureCB.txt', 'a+') as f_res:request_info = jsonable_encoder(request_data)f_res.write(str(request_info) + "\n")current_ts = round(time.time())res = \{"Name": "captureInfoResponse","TimeStamp": current_ts,"Session": request_data.Session,"Code": 1,"Message": ""}return res@app.post('/HeartBeatCB')
def strore_HeartBeatmessage(request_data: HeartBeatCBItem):""""""print(jsonable_encoder(request_data))with open('./HeartBeatCB.txt', 'a+') as f_res:request_info = jsonable_encoder(request_data)f_res.write(str(request_info) + "\n")current_ts = round(time.time())res = \{"Name": "heartbeatResponse","TimeStamp": current_ts,"Session": request_data.Session,"Code": 1,"Message": ""}return res@app.post('/Register')
def strore_Resgistermessage(request_data: RegisterItem):""""""print(jsonable_encoder(request_data))with open('./Register.txt', 'a+') as f_res:request_info = jsonable_encoder(request_data)f_res.write(str(request_info) + "\n")current_ts = round(time.time())Session_name = request_info['Data']['DeviceInfo']['DeviceUUID'] + '_' + str(current_ts)res = \{"Name": "registerResponse","TimeStamp": current_ts,"Data":{"Session": Session_name,"ServerVersion": "1.1.0"},"Code": 1,"Message": ""}return resif __name__ == '__main__':import uvicornuvicorn.run(app=app,host="0.0.0.0",port=8080,workers=1)
  • http请求IO控制代码块(仅供参数)
#!/usr/bin/python
import requests as req
import base64
import jsonpost_url = "http://192.168.1.9:595"data = {
'Name':'IOControlRequest',
'Data':
{'ContinueSeconds':10
}
}json_data = json.dumps(data)r = req.post(url = post_url, data = json_data)print(r.text)

具体逻辑靠大家的异想天开了哈


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部