基于虹软 人脸识别的闸机开发经验及源码分享

2024-02-09 05:10

本文主要是介绍基于虹软 人脸识别的闸机开发经验及源码分享,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

最近公司要开发一款人脸识别的闸机,就是在现有闸机上将一个小屏的识别装置,人脸识别成功后将闸机打开。

项目源码在 : https://gitee.com/panmingzhi/ArcSoftFace.git

使用了虹软的最新人脸识别技术完成开发 1、首先我们选择的是windows 64位的动态库,因为这个我熟悉,上手快。使用的是官方的开发库,这里的是官方在github的url : https://github.com/steponteam/FaceRecognization 官方有简单的例子,是最快上手的。但仅仅只是例子,现实使用还有很多坎。

2、取摄像头视频可以用opencv或者afroge,我使用的是afroge,因为这个库很小,仅仅只有几mb。使用afroge插入视频也有两种处理方式:1 使用videoSourcePlayer控件,重写他的paint事件,在paint事件中调用人脸追踪库,并画出方框。另外,软件启动时,再开一个Task,每间隔200ms取当前帧videoSourcePlayer.getCurrentFrame(),对当前这一帧进行人脸识别,如果识别在成功,就可以开闸了。

3、在每200ms间隔识别时,先判断一下当前的paint 人脸追踪有没有追踪到人脸,如果当前没有追踪到人脸,就可以略过当前这些的人脸识别了。

4、在识别到人脸后,不要立马开闸,要做一下限制,同一个人在不停的验证人脸时,2秒内可以不用处理。不然连续识别成功会导致语音报没完又接着重新放了一遍语音。

5、上述是最初一版的开发过程,在开发电脑上运行很流畅,也没有内存问题。而且模拟放了一个小品做测试,放了一个星期,内存始终保存在100-300左右,累计识别了25w次,这个量基本到项目上可以用一个月了。

6、悲剧总会来,开发电脑性能很强劲,视频很流畅,一点也没有卡的意思,但放在闸机上时,问题就后接踵而来了。 首先,闸机上的工供机是win7,要先安装.net 4.5.2,其次软件会加载不到libs下的dll,要安装 vcredist_x64.exe ,其次,请不要用ghost ,请不要用ghost,请不要用ghost,重要的事情3遍。否则会在系统事件中提示缺失dll,这个很抓狂,system32下己存在,但就是不断的提示缺失dll。 其次,工供机性能底,使用videoSourcePlayer不能控制FPS,导致画面有延时,大概有2秒,很可怕,查很多资料也都没用。后来就不使用videoSourcePlayer控件,直接使用NewFrame事件,然后绘制到picturebox。接收NewFrame传来的图片时,可以适当的放弃一部帧来提高流畅度,用Stopwatch来控制FPS始终保持在20帧左右。

7、在NewFrame事件中取当前帧来做人脸识别,经常会出现bitmap内存被损坏。这个问题最难搞的,甚至一度让我重新选择emgucv来实现USB相机采集,但问题还是依旧的。后来我反思了一下,使用 videoSourcePlayer 控件时没有这个问题,为什么使用pictureBox会发生,所以又回过头重新看一下videoSourcePlayer这个控件的实现。后来发现在取当前帧做人脸认别时,当前帧的图片有可能正在被绘制到pictureBox,而pictureBox.image=xxx这个方法不是立即绘制,是异步的,这就导致bitmap被同时在使用,找到问题后,加了一个lock锁就搞定了,又测试跑了一个星期,杠杠的。 8、window电脑会有一个屏幕休眠,当有人脸追踪到时,要调用windows自身的api来点亮屏幕。这个休眠是人为设定的,因为屏幕老亮着,给人感觉就是浪费电,一般设置30分钟自动屏幕关闭,软件追踪到人后,调用windows的鼠标滚珠事件来模拟有鼠标移动,达到点亮屏幕的目的。

更多内容欢迎来这里看 人脸识别的闸机开发经验及源码分享 是我这两周的折腾了,语言组织不好,但愿能给正在使用window做人脸识别一点帮助。 这是软件的截图,

转载于:https://my.oschina.net/bangbangda/blog/3016491

这篇关于基于虹软 人脸识别的闸机开发经验及源码分享的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/693212

相关文章

Django开发时如何避免频繁发送短信验证码(python图文代码)

《Django开发时如何避免频繁发送短信验证码(python图文代码)》Django开发时,为防止频繁发送验证码,后端需用Redis限制请求频率,结合管道技术提升效率,通过生产者消费者模式解耦业务逻辑... 目录避免频繁发送 验证码1. www.chinasem.cn避免频繁发送 验证码逻辑分析2. 避免频繁

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

PyQt5 GUI 开发的基础知识

《PyQt5GUI开发的基础知识》Qt是一个跨平台的C++图形用户界面开发框架,支持GUI和非GUI程序开发,本文介绍了使用PyQt5进行界面开发的基础知识,包括创建简单窗口、常用控件、窗口属性设... 目录简介第一个PyQt程序最常用的三个功能模块控件QPushButton(按钮)控件QLable(纯文本

OpenCV在Java中的完整集成指南分享

《OpenCV在Java中的完整集成指南分享》本文详解了在Java中集成OpenCV的方法,涵盖jar包导入、dll配置、JNI路径设置及跨平台兼容性处理,提供了图像处理、特征检测、实时视频分析等应用... 目录1. OpenCV简介与应用领域1.1 OpenCV的诞生与发展1.2 OpenCV的应用领域2

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF