实战项目——智慧社区(三)之 门禁管理

1、人脸识别

实现思路

①查询出所有的小区信息,下拉列表显示,用于后续判断人脸信息是否与所选小区匹配

②人脸识别:调用腾讯人脸识别的API接口,首先判断传入图片是否为一张人脸;其次将这张人脸去服务器的人员库进行比对是否存在这个人员;然后根据这张人脸去数据库查询所属小区和当前选择的小区进行比对,查看当前人脸成员是否为小区成员;最后将数据存入出入登记表(in_out_record)中,判断条件为查看登记表中数据的outTime出时间是否为空,若为空,当前居民进小区;若不为空,当前居民出小区;出入登记表中存入信息,包含时间和图片信息。

查询所有小区信息

    /*** 加载小区数据* @return*/@GetMapping("/communityList")public Result communityList(){List<Community> data = communityService.list();if(data==null) return Result.error("没有小区数据");return Result.ok().put("data", data);}

出入小区的人脸识别

/*** 人脸识别* @param inOutFaceForm* @return*/@LogAnnotation("人脸识别")@PostMapping("/add")public Result add(@RequestBody InOutFaceForm inOutFaceForm){//1、判断是否为一张人脸//2、去人员库比对是否存在这个人员//3、和数据库返回的小区以及你选的小区进行比对,看是否为本小区成员//4、将数据存入出入登记的表中,条件outTime字段是否为空,来决定是进小区还是出小区,还是新记录//调用腾讯AI接口FaceApi faceApi = new FaceApi();RootResp resp = faceApi.searchPersonsReturnsByGroup(apiConfiguration, inOutFaceForm.getFileBase64());//返回的提示信息String msg = "";//封装人员信息的json对象JSONObject personInfo = null;if(resp.getRet() == 0) {JSONObject object = JSONObject.parseObject(resp.getData().toString());JSONArray resultsReturnsByGroup = object.getJSONArray("ResultsReturnsByGroup");JSONObject returnsByGroupJSONObject = resultsReturnsByGroup.getJSONObject(0);JSONArray groupCandidates = returnsByGroupJSONObject.getJSONArray("GroupCandidates");JSONObject groupCandidatesJSONObject = groupCandidates.getJSONObject(0);JSONArray candidates = groupCandidatesJSONObject.getJSONArray("Candidates");//返回多个人员,匹配数据库人员信息String personId ="";String faceId = "";String personName = "";String faceUrl = "";long pid = 0;Person p = null, p1 = null;for(int i = 0;i < candidates.size();i++) {personInfo = candidates.getJSONObject(i);personId = personInfo.getString("PersonId");faceId = personInfo.getString("FaceId");personName = personInfo.getString("PersonName");personId = personId.substring(4);pid = Integer.parseInt(personId);p = personService.getById(pid);if(p == null)continue;elsep1 = p;faceUrl = p.getFaceUrl();if(faceUrl == null || faceUrl.equals("")){continue;}faceUrl = faceUrl.substring(faceUrl.lastIndexOf("/")+1,faceUrl.lastIndexOf("."));if(faceId.equals(faceUrl)) {break;}}if(p==null) {return Result.ok().put("data","人员信息不存在");}if(inOutFaceForm.getCommunityId() != p.getCommunityId()) {return Result.ok().put("data","对不起,你不是本小区居民,请与系统管理员联系。");}InOutRecord inoutrecord = new InOutRecord();inoutrecord.setCommunityId(p.getCommunityId());inoutrecord.setPersonId(p.getPersonId());try {//保存图片String newFileName = UUID.randomUUID()+"." + inOutFaceForm.getExtName();String fileName = face + newFileName;Base64Util.decoderBase64File(inOutFaceForm.getFileBase64(),fileName);String basePath = urlPrefix + "community/upload/face/" + newFileName;//查找系统中是否有该人员的出入场信息InOutRecord inoutrecord1 = this.inOutRecordMapper.getInOutRecord(inoutrecord);//进入小区if(inoutrecord1 == null) {inoutrecord.setInPic(basePath);this.inOutRecordMapper.insert(inoutrecord);return Result.ok().put("status", "success").put("data", "【"+p.getUserName() + "】进入小区");//离开小区} else {inoutrecord1.setOutPic(basePath);this.inOutRecordMapper.updateById(inoutrecord1);return Result.ok().put("status", "success").put("data", "【"+p.getUserName() + "】离开小区");}} catch (Exception e) {e.printStackTrace();}}else{msg = "人脸识别失败,错误码=" + resp.getRet() + "," + resp.getMsg();}return Result.ok().put("data",msg);

界面

2、出入记录

出入记录表(in_out_record)设计

用来存储居民出入记录的信息,包含出入时间和出入时的人脸照片

出入记录查询和搜索,这里不再详述,就是对数据库进行根据条件的查询操作,界面如下

界面 

3、访客登记

访客记录(manual_record)表设计

用于存储访客的登记信息

本系统提供了访客记录搜索和查询、访客记录添加、访客记录修改、访客记录删除、根据id查询访客记录的功能,实现思路和小区管理一样,因此不再详述,页面如下。

页面

访客记录添加

访客记录修改 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/809130.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【简单讲解下WebView的使用与后退键处理】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

PDF文件内容可以转成word版本吗?答案是肯定的 PDF转word的方法

一&#xff0c;PDF转Word的必要性 随着信息技术的飞速发展&#xff0c;文档的格式和转换成为了我们日常生活和工作中不可避免的一部分。其中&#xff0c;PDF转Word的需求尤为突出。PDF作为一种跨平台的文档格式&#xff0c;具有阅读效果好、不易被篡改等优点&#xff0c;但在编…

基于Springcloud可视化项目:智慧工地可视化大数据云平台源码

目录 技术架构 智慧工地系统在实际推行过程中遇到的问题 智慧工地接纳程度较低 基础设施条件有待完善 智慧工地整体生态尚未完善 智慧工地平台各功能模块 施工过程工信程息信管息理管模理块 人员管理模块 生产管理模块 技术管理模块 质量管理模块 安全管理模块 绿…

【病毒分析】DevicData勒索病毒分析

1.背景 1.1来源 近期&#xff0c;Solar团队收到某医疗单位的援助请求&#xff0c;该公司的计算机受到了某勒索病毒的侵害&#xff0c;所有的文件被加密并且添加了.DevicData-P-470b1abd后缀&#xff0c;我司人员现场取证进行排查并提取加密器,本文是对于加密器的分析。 2.恶…

1.Godot引擎|场景|节点|GDS|介绍

Godot介绍 Godot是一款游戏引擎 可以通过在steam商城免费下载 初学者和编程基础稍差的推荐学习使用GDScript&#xff0c;和python有些相似 Godot节点 Godot的开发思想——围绕节点 节点的特征与优势 最常用基本的开发组件大部分都具有具体的功能&#xff0c;如图片&#xf…

ubuntu 应用程序设置 开机自启动

1. 通过.desktop方式 autostart 中.desktop 配置文件 1.1 用户级自启动 登录后才可以启动服务。 可视化配置&#xff1a;在ubuntu自带的可视化程序来配置&#xff0c;就是StartupApplications&#xff0c;它在启动台中可以找到。 在ubuntu下目录是 ~/.config/autostart 添…

大数据架构的演变与多种大数据架构类型说明——解读大数据架构(一)

文章目录 前言数据架构的演变关系型数仓数据湖现代数仓数据网络数据湖仓数据网格 前言 在搭建和使用大数据组件前&#xff0c;预先投入时间设计和构建正确的数据架构绝对至关重要。如果在前期没有设计正确的数据架构就开始实施方案&#xff0c;在后期想更改架构设计是十分困难…

12-pyspark的RDD算子注意事项总结

目录 相近算子异同总结相近变换算子异同foreach和foreachPartitionfold和reducecoalesce和repatition 相近动作算子异同cache和persist 算子注意事项需要注意的变换算子需要注意的动作算子 PySpark实战笔记系列第三篇 10-用PySpark建立第一个Spark RDD(PySpark实战笔记系列第…

Android性能优化RecyclerView预加载LayoutManager的getExtraLayoutSpace,Kotlin

Android性能优化RecyclerView预加载LayoutManager的getExtraLayoutSpace&#xff0c;Kotlin RecyclerView默认只加载当前屏幕肉眼可见区域的有限item数量&#xff0c;有些场景下&#xff0c;需要在屏幕外不可见的区域多加载一批item出来&#xff0c;这有时候被称之为“预加载”…

2024考研调剂须知

----------------------------------------------------------------------------------------------------- 考研复试科研背景提升班 教你快速深入了解掌握考研复试面试中的常见问题以及注意事项&#xff0c;系统的教你如何在短期内快速提升自己的专业知识水平和编程以及英语…

前端服务请求跨域被拦截,Java后端Springboot服务解决办法

跨域问题 跨域前端遇到的问题&#xff1a; Access to XMLHttpRequest at ‘http://www.xxx.xxxx/api/x/d/xc’ from origin ‘http://127.0.0.1:3000’ has been blocked by cors policy: No ‘Access-Contorl-Allow-Origin’ header is present on the requested resource. …

IDE Eval Reset —— idea 重置试用期插件安装

idea 重置试用期插件安装 一、在线安装&#xff1a; 1、打开IntelliJ IDEA 2、file—> setting —> plugins 添加三方插件库 点击后&#xff0c;跳出弹框点击号&#xff0c;添加图中的网址 https://plugins.zhile.io3、搜索 IDE Eval Reset &#xff0c;安装插件 4…

Excel·VBA二维数组S形排列

与之前的文章《ExcelVBA螺旋数组函数》将一维数组转为二维螺旋数组 本文将数组转为S形排列的二维数组&#xff0c;类似考场座位S形顺序 Function S形排列(ByVal arr, ByVal num_rows&, ByVal num_cols&, Optional ByVal mode$ "row")将数组arr转为num_rows…

OpenHarmony开发案例:【分布式计算器】

介绍 本示例使用分布式能力实现了一个简单的计算器应用&#xff0c;可以进行简单的数值计算&#xff0c;支持远程拉起另一个设备的计算器应用&#xff0c;两个计算器应用进行协同计算。 远程拉起&#xff1a;通过StartAbility实现远端应用的拉起。 协同计算&#xff1a;通过…

ios包上架系列 一、打包机Flutter项目环境配置

打包的时候一定要断开网络&#xff0c;上线包名只能在打包机配置 1、Xcode 需要从其它电脑空投 版本号&#xff1a;14.3.1 升级到Xcode14.3后发现,从这个版本开始,苹果从Xcode中移除了ARC相关的库,会导致fluter项目下的原生工程使用Xcode编译原生代码没 有问题, 但是flutter项…

springboot上传模块到私服,再用pom引用下来

有时候要做一个公司的公共服务模块。不能说大家都直接把代码粘贴进去&#xff0c;因为会需要维护很多份&#xff1b;这样就剩下两个方式了。 方式一&#xff1a;自己独立部署一个公共服务的服务&#xff0c;全公司都调用&#xff0c;通过http、rpc或者grpc的方式&#xff0c;这…

如何安装PyFluent

0.什么是PyFluent? 官方介绍如下&#xff1a; PyFluent 是 PyAnsys 生态系统的一部分&#xff0c; 允许您在所选的 Python 环境中结合使用 Fluent 与其他 PyAnsys 库和外部 Python 库一起使用。 PyFluent 实现了客户端-服务器体系结构。它使用谷歌遥控器 过程调用或 gRPC 接…

基于GSP工具箱的NILM算法matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于GSP工具箱的NILM算法matlab仿真。GSP是图形信号处理的缩写&#xff0c;GSP非常适合对未知数据进行分类&#xff0c;尤其是当训练数据非常短时。GSPBox的基本理论是谱图论和…

构建强大的物联网平台系统架构:关键步骤与最佳实践

随着物联网&#xff08;IoT&#xff09;技术的快速发展和广泛应用&#xff0c;越来越多的企业开始意识到搭建一个强大而可靠的物联网平台系统架构的重要性。一个完善的物联网平台可以帮助企业高效地管理和监控各种连接设备&#xff0c;并实现数据的收集、处理和分析。在本文中&…

npm i -g nodemon 遇到的下载卡住及运行权限问题解决记录

一、下载nodemon原因 nodemon作用&#xff1a;用node环境运行js文件时可以实时刷新运行出结果 (即修改js代码后不需再手动重新运行js文件) 二、下载卡住 reify:semver:timing reifyNode:node_modules/nodemon Completed 卡住位置&#xff1a;reify:semver: timing reifyNode…