网易首页 > 网易号 > 正文 申请入驻

打造本地人脸门禁系统(一)——数据采集

0
分享至

目前很多中小学创客项目中有关“人脸识别”都是通过使用百度的AI开放平台来实现的。需要提前注册账号并采集“人脸库”信息,然后借助于个人账号的API Key和Secret Key进行在线数据的调用比对,最终获取置信度百分比实现对人脸的识别判断。这种方式的优点是用户编程时人脸识别的底层算法及实现过程是一个黑箱,只需通过接口进行数据的双向传输即可。缺点是必须保证网络的通畅,而且免费账号可能有时间段或有效使用次数等限制。

我们以树莓派为基础平台,借助开源计算机视觉库OpenCV、多维数组计算的Numpy库、连接硬件设备的PinPong库以及PIL库、os库等,就可以通过摄像头采集人脸进行数据的本地训练,最终实现脱离网络环境的人脸识别本地门禁系统。

0111

实验器材及连接

实验器材包括:树莓派3B和古德微扩展板各一块,带数据排线的P5V04A SUNNY定焦摄像头一个,SG90舵机一个,RGB三合一红绿灯模块一个,小型面包板一块,杜邦线若干。

首先,将树莓派主板CSI卡槽接口(标注为“CAMERA”)的锁扣两端向上轻轻拉起,再将摄像头数据排线末端的“金手指”一面小心插至卡槽底部,并从两端压紧锁扣。接着,将古德微扩展板四角对齐,轻轻压进树莓派的边槽引脚组,注意将摄像头的数据排线从另一侧引出。

然后,将RGB红绿灯模块的四个引脚并列插入面包板,再使用红色、黄色和绿色杜邦线分别将红绿灯模块的R、Y和G引脚对应连接至扩展板的5号、6号和12号引脚的“+”极,用白色杜邦线将红绿灯模块的GND引脚连接至扩展板5号引脚的“-”极;接着,将舵机插入扩展板的18号引脚组,注意黄色、红色和棕色线分别对应D数据端、VCC和GND端;最后,给树莓派通电,启动操作系统(如图1)。

0211

获取人脸图片的源数据

通过编程让树莓派的摄像头拍摄一批我的脸部图片,作为训练AI的源数据。

运行Windows的“远程桌面连接”程序,输入树莓派的IP地址(192.168.1.120)后点击“连接”按钮,进入树莓派的操作系统,准备开始Python代码编程。

1.安装库模块及

笔者的树莓派操作系统中Python版本是3.7.3,需要在“LX终端”先安装OpenCV库,命令是“pip3 install opencv-python”;用“pip3 install numpy”命令安装Numpy库。同样安装好PIL库、os库以及PinPong库。

2.拷贝人脸识别文件

接下来,在/home/pi/pycode中建立Recognize_Face项目文件夹,文件夹中分别建立PicData和Data两个空目录,前者用来保存摄像头捕获人脸的照片文件,后者则用来保存训练好的trainner.yml数据文件。

然后,从/usr/local/share/opencv4/haarcascades文件夹中将已经训练好的人脸正面识别检测模型haarcascade_frontalface_default.xml文件复制进来,待调用(如图2)。

3.采集并将人脸图转灰度

为了提高人脸图片的识别度,要将摄像头捕获的BGR格式人脸照片转换成GRAY灰度图。

首先,导入numpy和opencv库:“import numpy as np”“import cv2”;接着,建立变量cap,赋值为“cv2.VideoCapture(0)”,作用是控制摄像头开始抓拍生成视频画面;建立变量face_cascade,赋值为“cv2.CascadeClassifier("haarcascade_frontalface_default.xml")”,作用是使用人脸检测的级联分类器读取之前保存在当前文件夹中的识别检测模型文件haarcascade_frontalface_default.xml;建立变量sampleNum,赋值为0,对人脸采集的数目进行零初始化计数;建立变量ID,赋值为“input("请输入您的数字ID:")”,作用是在屏幕上输出提示信息并为人脸采集照片文件进行命名的归类。

在“while True”循环结构中,先通过语句“ret, img = cap.read()”对摄像头的人脸捕获画面进行读取,其中的ret返回值为布尔型,读取正确则返回True,变量img中存储的是矩阵形式的一帧图片信息;再建立变量gray,赋值为“cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)”,作用是将读取到的BGR格式图片进行GRAY灰度颜色转换,生成对应的灰度图片(目的是提高图片的识别度);建立变量faces,赋值为“face_cascade.detectMultiScale(gray,1.3,5)”,作用是设置缩放参数为1.3、人脸确定的最小次数为5,实现对应精度的人脸识别,返回值是OpenCV对图片的探测结果;在“for (x,y,w,h) in faces”内循环中,(x,y)是左上角的像素点的二维坐标值,w和h则分别表示宽度和高度;对变量img进行二次处理并赋值为“cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)”,作用是使用rectangle进行人脸的矩形框标记,其中的“(x+w,y+h)”表示矩阵右下角像素的坐标值,“(255,0,0)”所对应的是BGR格式的蓝色Blue颜色值,“2”表示画框的线宽;语句“sampleNum = sampleNum + 1”的作用是进行人脸采集“加1”计数。

4.保存采集数据

通过cv2.imwrite进行图片文件的保存操作,文件主名由四部分组成:“"PicData/user."+str(ID)+"."+str(sampleNum)”,然后是扩展名“".jpg"”(最终的文件名格式为“user.id.num.jpg”),“gray[y:y+h,x:x+w]”的作用是将灰度图片作为二维数组进行人脸区域的检测;语句“cv2.imshow("img", img)”的作用是显示变量img所存储的图片,该显示窗口的名称也同为“img”;接下来,通过两个if条件语句实现摄像头拍照和图片存储操作的break中断,一个条件为“cv2.waitKey(1) & 0xFF == ord("q")”,表示延时1毫秒的切换来等待键盘是否按下字母“q”(quit);另一个条件为“sampleNum == 1000”,表示人脸采集的数目是否超过1000张。

最后,添加摄像头的资源释放语句“cap.release()”,并且关闭图像窗口:“cv2.destroyAllWindows()”,将程序保存为“01Capture_Face.py”(如图3)。

5.测试人脸采集程序

运行程序,在“请输入您的数字ID:”提示信息后面输入数字“1”后回车,此时会弹出一个名为“img”的摄像头预览窗口,显示的内容即为摄像头的实时拍摄画面;尽量保持正脸或是小角度的侧脸及仰视和俯视,摄像头会将识别到的人脸区域用蓝色矩形框进行标识(如图4)。

经过一段时间的人脸采集后,按一下键盘的q键退出,摄像头的实时预览窗口画面关闭;此时进入PicData文件夹查看,是不是保存着若干张人脸照片文件(134张)?眼神和姿态可能各不相同,但共同点是均对人脸区域进行了截取——即蓝色矩形框内的“人脸”信息(如图5)。

下一期,我们将用这些“源数据”来训练人脸数据模型。

编辑|张毅

审核|吴新

爆料联系:cpcfan1874(微信)

壹零社:用图文、视频记录科技互联网新鲜事、电商生活、云计算、ICT领域、消费电子,商业故事。《中国知网》每周全文收录;中国科技报刊100强;2021年微博百万粉丝俱乐部成员;2022年抖音优质科技内容创作者

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
意大利全场共计仅4次射门,创队史大赛最低纪录

意大利全场共计仅4次射门,创队史大赛最低纪录

直播吧
2024-06-21 05:17:13
台湾问题根本不是武统与和统的问题了,而是以下这两方面问题

台湾问题根本不是武统与和统的问题了,而是以下这两方面问题

星辰故事屋
2024-05-24 20:01:38
几千年都没有变过!

几千年都没有变过!

吴女士
2024-04-26 11:16:12
Stellantis集团:如经济效益可行 零跑汽车可在集团旗下全球任何一家工厂进行生产

Stellantis集团:如经济效益可行 零跑汽车可在集团旗下全球任何一家工厂进行生产

财联社
2024-06-20 12:12:16
美记:鹈鹕想用英格拉姆去换申京 火箭根本不感兴趣

美记:鹈鹕想用英格拉姆去换申京 火箭根本不感兴趣

直播吧
2024-06-20 21:49:46
女排遇争议判罚 丁霞爆粗口怒骂韩国裁判曝光  难怪蔡斌不放弃她

女排遇争议判罚 丁霞爆粗口怒骂韩国裁判曝光 难怪蔡斌不放弃她

厝边人侃体育
2024-06-20 23:10:21
王皓妻儿现身成都!漂亮老婆1米76大长腿

王皓妻儿现身成都!漂亮老婆1米76大长腿

最爱乒乓球
2024-06-21 00:06:26
中国女排0-3两连败日本,朱婷说出大实话,惠若琪央视痛批郑益昕

中国女排0-3两连败日本,朱婷说出大实话,惠若琪央视痛批郑益昕

小鬼头体育
2024-06-20 22:35:50
拜登也始料未及!清华大学打出王炸,中国6G已彻底势不可挡了?

拜登也始料未及!清华大学打出王炸,中国6G已彻底势不可挡了?

嘿哥哥科技
2024-06-20 22:16:04
7月10日起执行!河北医保局最新通知→

7月10日起执行!河北医保局最新通知→

唐网
2024-06-20 17:53:33
黄磊非洲被偶遇!转型幕后瘦了好多!原来这些爆款综艺都是他导的

黄磊非洲被偶遇!转型幕后瘦了好多!原来这些爆款综艺都是他导的

鑫鑫说说
2024-06-20 10:41:32
什么尺寸的丁丁,更受女生喜欢?

什么尺寸的丁丁,更受女生喜欢?

坟头长草
2024-05-01 10:55:00
基耶利尼:梅罗水平一样 对阵我的时候梅西没进球&C罗各种方式进

基耶利尼:梅罗水平一样 对阵我的时候梅西没进球&C罗各种方式进

直播吧
2024-06-20 20:34:10
湖北省孝感市委常委、副市长程涛,履新省民政厅

湖北省孝感市委常委、副市长程涛,履新省民政厅

影视解说阿相
2024-06-20 21:55:56
近2亿独生子女的困境,已经来临

近2亿独生子女的困境,已经来临

深度知局
2024-05-29 19:01:27
凌晨3点,商贩与执法城管起争执,西瓜被砸碎一地!当地回应

凌晨3点,商贩与执法城管起争执,西瓜被砸碎一地!当地回应

鲁中晨报
2024-06-20 08:39:07
最高法“大老虎”落马:官至中央部级,腐受贿1.14亿,儿子家中被查出3亿现金

最高法“大老虎”落马:官至中央部级,腐受贿1.14亿,儿子家中被查出3亿现金

天闻地知
2024-06-19 09:36:11
106国参加瑞士和会:中方拒绝参会,与世界文明为伍,勿忘雅尔塔

106国参加瑞士和会:中方拒绝参会,与世界文明为伍,勿忘雅尔塔

大风文字
2024-06-03 10:27:47
当过5年县长、7年县委书记,廖敏严重损害当地政治生态

当过5年县长、7年县委书记,廖敏严重损害当地政治生态

鲁中晨报
2024-06-20 16:47:11
原来蚊子的最大克星不是蚊香?其实驱蚊很简单,整晚开窗都不怕

原来蚊子的最大克星不是蚊香?其实驱蚊很简单,整晚开窗都不怕

白茶之清欢
2024-05-09 21:32:50
2024-06-21 05:38:44
壹零社
壹零社
最新鲜的互联网产业资讯
2091文章数 1350关注度
往期回顾 全部

科技要闻

小米SU7流量泼天,富贵却被蔚来接住了

头条要闻

欧洲杯:西班牙1-0意大利提前出线

头条要闻

欧洲杯:西班牙1-0意大利提前出线

体育要闻

千夫所指的关系户 成了拯救葡萄牙的英雄

娱乐要闻

叶舒华参加柯震东生日聚会,五毒俱全

财经要闻

楼市新“王炸”!释放何信号?

汽车要闻

售价11.79-14.39万元 新一代哈弗H6正式上市

态度原创

房产
手机
游戏
旅游
家居

房产要闻

海棠湾!一所重量级国际学校真的来了!

手机要闻

OPPO Find X8 Pro再次被确认:四摄双潜望+骁龙8 Gen4

魔兽世界怀旧服即将开服,正式服何时开放?官方早已透露玄机!

旅游要闻

铁路儿童票新规 已有超4900万小旅客免费出行

家居要闻

自然开放 实现灵动可变空间

无障碍浏览 进入关怀版