度目视频分析盒子-解决方案-配合门禁使用介绍
度目视频分析盒子-案例第一篇
百度的出品的度目视频分析盒子优点:
- 价格绝对便宜,3559AV100(4T算力)的价格从500涨到3000多,度目视频分析盒子没有涨价这个要送一波广告:度目视频分析盒子购买链接
- 检测人脸和抓拍效果很好,抓拍10ms,误抓拍率低
- 识别效果很好,速度也非常快,应该还有待提升(我还没遇见过)
- 视频盒子外壳工艺很不错,有点Mac意思
- 6路基本满帧、8路15帧的样子(性能不错呦)
百度视频分析盒子的不足:主要是易用性问题
- 没有支持web的配置,连接显示虽然展示效果很Nice,但是实际部署就有点鸡肋了
- 只有鼠标的配置,不支持键盘,这个添加URL是真的有点恐怖(心惊胆战)
完整的视频分析盒子连接继电器控制闸机操作指南
物料准备
物料名称 | 价格 | 购买链接 | 功能 | 备注 |
---|---|---|---|---|
视频分析会 | 3999 | 视频分析盒子 | 人脸识别和抓拍 | 核心物料 |
交换机 | 700 | 华三 | poe供电和网络传输 | 华三路由器作为华为当年的子公司质量有保障 |
继电器 | 20 | fu植本段内容 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)
具体逻辑靠大家的异想天开了哈
度目视频分析盒子-解决方案-配合门禁使用介绍相关推荐
- 度目视频分析盒子+NVR
度目视频分析盒子配合NVR使用指南 视频分析盒子功能介绍: 视频分析盒子主要是用摄像头拉取视频流进行分析,对视频里面的人脸进行抓拍和识别,支持8路视频的接入,如果接入6路IPC达到25帧:接入8路I ...
- 深元ai智慧工地视频分析盒子提高建筑施工现场安全效率
随着社会的快速发展,建筑行业安全问题日益受到重视.为了解决传统人工巡查的诸多问题,AI智慧工地视频分析盒子应运而生,通过人工智能技术,全面提高建筑施工现场的安全工作效率. 一.AI智慧工地视频分析盒子 ...
- 小盒子解决大问题加油站智能视频分析盒子
当你走进一个加油站,拿出手机,开始打电话,就会听到喇叭里面喊道:"加油站内请勿拨打电话!".这说明这家加油站安装了智能视频分析系统,这个报警信息就是通过智能视频分析设备对监控画面进 ...
- 百度大脑度目系列硬件常见问题汇总
1.Q:百度自研硬件-度目系列视觉硬件都有那几款产品? A:百度大脑度目系列硬件,在2020年4月的发布会中,发布了以下四款硬件: 人脸应用套件:https://ai.baidu.com/tech/d ...
- DeepStream SDK 创建视频分析应用程序
NVIDIA DeepStream SDK Accelerate your video analytics application development 为IVA智能视频分析提供解决方案 DeepS ...
- scada系统集成_专家 | 浅析地铁综合监控系统集成门禁系统
目前国内省会及一.二线城市大力开展地铁建设,文章通过分析地铁综合监控系统及门禁系统软件和结构特点,浅析综合监控系统集成门禁系统的典型方案,并分析可行性. 关键词:综合监控系统:门禁系统:集成 中图分类 ...
- 人脸识别 宿舍门禁系统(python qt opencv带数据库)
制作过程 最新更新 其他版本基于retinaface,卷神经网络余弦相似度人脸匹配 本文章版本预览 点击下载源代码 视频效果 一.界面设计 使用Qt Designer(源代码内有设计文件ui): 二. ...
- java门禁系统项目开发实现
文章目录 java门禁系统项目实现 一.项目目标和任务 二.项目结构 package sys Computer.java ControlSys.java Door.java InputEquip.ja ...
- 门禁系统服务器未连接,门禁系统一般故障处理方法及如何选择电插锁
[导读]一套门禁系统由核心控制器.电控锁.读卡器.开关及门禁电源等配件构成,所有设备都采用DC12V直流供电,而这些设备功率最大的要数电控锁,其瞬间电流可以达到900mA,直流电压在传输过程中存在一定 ...
最新文章
- *ctf box题解
- 如何使用Angular的@Input()装饰器
- matlab 读取excel一列,读取excel中的数据把第一列相同的所有行数据输出成一个excel...
- 制作根文件系统时的错误解决
- 访问修饰符作用范围由大到小是_9个java基础小知识
- c++ eos智能合约开发_hyperledger fabric 开发第一个智能合约
- 【白皮书分享】2020中国硬科技创新白皮书.pdf(附下载链接)
- 晚上大龙哥带来了一本vb教程,由于好奇看了下
- 【DATAGUARD】物理dg在主库丢失归档文件的情况下的恢复(七)
- android引用X5内核webview部分问题记录
- 数学建模中的传染病模型及其编程求解
- 时区的转换nbsp;格林尼治标准时间(GMT…
- [渝粤教育] 中国地质大学 工业通风及除尘 复习题 (2)
- 2010,有关中国的几个瞬间
- C语言编程>第二十二周 ⑥ 请补充fun函数,该函数的功能是:把字符下标能被2和3同时整除的字符从字符串s中删除,把剩余的字符重新保存在字符串s中。
- 使用 Kubernetes 和 Istio 进行基于容器的全面服务监控
- 数据结构课程设计-(五)行车路线(图的应用)
- php表格升序降序,excel如何实现升序和降序
- 利用Python对体育竞技比赛进行分析
- #读书#黑白之间——中国历史文化中的任侠者