文档章节

人脸识别闸机的开发与源码实战分享

o
 osc_y8yehimr
发布于 2019/03/20 16:17
字数 1067
阅读 19
收藏 0

精选30+云产品,助力企业轻松上云!>>>

最近公司要开发一款人脸识别的闸机,就是在现有闸机上将一个小屏的识别装置,人脸识别成功后将闸机打开。项目源码在 : https://gitee.com/panmingzhi/ArcSoftFace.git1、
1、首先我们选择的是windows 64位的动态库,因为这个我熟悉,上手快。使用的是官方的开发库,这里的是官方在github的url : https://github.com/steponteam/FaceRecognization 官方有简单的例子,是最快上手的。但仅仅只是例子,现实使用还有很多坎。
2、取摄像头视频可以用opencv或者afroge,我使用的是afroge,因为这个库很小,仅仅只有几mb。使用afroge插入视频也有两种处理方式:使用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做人脸识别一点帮助。这是软件的截图,

 

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
虹软人脸识别的闸机开发经验及源码分享

最近公司要开发一款人脸识别的闸机,就是在现有闸机上将一个小屏的识别装置,人脸识别成功后将闸机打开。 项目源码在 : https://gitee.com/panmingzhi/ArcSoftFace.git 使用了虹软的最新人脸...

KEAIILIN
2019/03/28
5
0
分享一个最近开发的人脸识别的闸机过程及源码

原文:分享一个最近开发的人脸识别的闸机过程及源码 最近公司要开发一款人脸识别的闸机,就是在现有闸机上将一个小屏的识别装置,人脸识别成功后将闸机打开。 项目源码在 :https://gitee.com...

osc_51w4wn2j
2019/01/29
5
0
人脸识别 闸机开发分享

最近公司要开发一款人脸识别的闸机,就是在现有闸机上将一个小屏的识别装置,人脸识别成功后将闸机打开。 项目源码在 : https://gitee.com/panmingzhi/ArcSoftFace.git 使用了虹软的最新人脸...

xx很哇噻
2019/05/30
18
0
人脸识别 闸机开发分享

最近公司要开发一款人脸识别的闸机,就是在现有闸机上将一个小屏的识别装置,人脸识别成功后将闸机打开。 项目源码在 : https://gitee.com/panmingzhi/ArcSoftFace.git 使用了虹软的最新人脸...

xx很哇噻
2019/05/30
14
0
人脸识别 闸机开发分享

最近公司要开发一款人脸识别的闸机,就是在现有闸机上将一个小屏的识别装置,人脸识别成功后将闸机打开。 项目源码在 : https://gitee.com/panmingzhi/ArcSoftFace.git 使用了虹软的最新人脸...

xx很哇噻
2019/05/30
131
0

没有更多内容

加载失败,请刷新页面

加载更多

Buffer的创建及使用源码分析——ByteBuffer为例

目录 Buffer概述 Buffer的创建 Buffer的使用 总结 参考资料 Buffer概述 注:全文以ByteBuffer类为例说明 在Java中提供了7种类型的Buffer,每一种类型的Buffer根据分配内存的方式不同又可以分为...

osc_zoa046qb
29分钟前
21
0
《 ZooKeeper : Wait-free coordination for Internet-scale systems 》论文研读

Zookeeper 研读 说明:本文为论文 《 ZooKeeper : Wait-free coordination for Internet-scale systems 》 的个人理解,难免有理解不到位之处,欢迎交流与指正 。 论文地址:Zookeeper Paper...

osc_4isxawz4
30分钟前
19
0
利用__new__实现单例模式

26 利用__new__实现单例模式 python当中有很多方法都可以实现单例模式, 但利用__new__无疑是最推荐的方式. 代码如下: class Demo:is_instance = Nonedef __new__(cls, *args, **kwargs...

_Change_
31分钟前
11
0
如何白嫖微软Azure12个月及避坑指南

Azure是微软提供的一个云服务平台。是全球除了AWS外最大的云服务提供商。Azure是微软除了windows之外另外一个王牌,微软错过了移动端,还好抓住了云服务。这里的Azure是Azure国际不是Azure中...

osc_dwuu5jqk
32分钟前
21
0
Mybatis源码初探——优雅精良的骨架

@ 目录 前言 精良的Mybatis骨架 宏观设计 基础支撑 日志 日志的加载 日志的使用 数据源 数据源的创建 池化技术原理 数据结构 获取连接 回收连接 缓存 缓存的实现 CacheKey 反射 总结 前言 My...

osc_r9wwwi0j
33分钟前
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部