427|1

48

帖子

4

TA的资源

一粒金砂(中级)

【DigiKey“智造万物,快乐不停”创意大赛】基于树莓派的智能考勤机+人脸识别和显示 [复制链接]

###############################################################
上一个贴子上最后遇到了人脸识别不准的问题,针对这个问题,经过排查发现是目标样本太少的缘故,之前在抓拍图片的时候,xiao_zhang文件夹只保存了4张图片,所以在人脸搜集的时候多保存一些抓拍到人脸的图片。这里保存50张图片。
121006dmp5eo0nm0b5sbcr.png
然后再次进行训练和人脸识别,输入脚本命令:
python3 face_train.py
训练完以后开始进行识别,输入脚本命令
python3 face_recogn.py
此时再去识别,可以看到识别成功率已经大大提高了。
121006sm00c0lrrg0g020m.png 121006w2c92cmmoc7z02h0.png
################################################
当人脸识别完以后需要在显示屏上显示出来,翻找半天,找到一个0.96寸IIC接口的OLED显示屏,于是就用这个显示识别到的人脸信息。
首先,先查找树莓派的40pin引脚的接口信息,所以输入命令:
pinout
可以看到,终端显示的引脚信息,再结合已经有的引脚图,找到IIC的引脚好,这里使用的是IIC0,
所以接线:
OLED屏 树莓派
VDD——>3.3V
GND——>GND
SDA——>SDA.1
SCK——>SCK.1
121006pqj5yv82q69sob8m.png 121006pyqbpmwmwp6qmima.png 121006htxd2pvq3v2232f5.png
121006ty8l6y8y0vjyyjm5.jpg
接好线以后,我们打开树莓派对IIC的支持,输入命令:
sudo raspi-config
然后选择:
121006unsynczcl7qlcqny.png
121006q1di0q1iu10iiygh.png
121006rrpp79snhp6p7p7g.png
打开IIC的支持以后,需要查看一下树莓派是否识别到OLED设备,输入命令:
sudo i2cdetect -y 1
可以发现,树莓派已经可以识别到IIC接口的OLED屏了,
121006y0tzj9kwdrjobzu5.png
但是这里有个问题,从引脚图看,树莓派引脚有两个IIC接口,一个是IIC0(SDA.0,SCL.0),另一个是IIC1(SDA.1,SCL.1)。不知道为何,连接SDA.0和SCL.0时树莓派检测不到IIC器件,但是连接SDA,1和SCL.1时就可以,这个问题回头再好好研究一下。
#####################
当树莓派可以检测到IIC接口屏幕时,这里先安装一个GPIO库,方便后续开发,键入命令:
sudo apt-get install wiringpi
可以看到当前系统已经自带了wiringpi库,所以查看一下GPIO库的版本,输入:
gpio –v
可以看到
121006fzd10ofdgee02nes.png
先测试一个GPIO输出高低电平,使用一个LED灯,输出高低电平叫LED亮灭。
新建文件夹 led_test,键入命令:
mkdir led_test
cd led_test
然后新建 led_test.c,键入命令
vim led_test.c
输入以下代码:
#include <stdio.h>
#include <wiringPi.h>
int main(void)
{
int LED = 0;
wiringPiSetup();
pinMode(LED, OUTPUT); // 在wiringPi编号格式中,GPIO0编号为0
printf("LED is blinking...\r\n");
while(1)
{
printf("LED:%d is on \r\n", LED);
digitalWrite(LED, HIGH);delay(1000);
printf("LED:%d is off \r\n", LED);
digitalWrite(LED, LOW);delay(1000);
}
return 0;
}
这段代码叫树莓派GPIO.0输出高低电平使led亮灭。
然后编译这段代码,键入命令
gcc -o led_test led_test.c –lwiringPi
使用命令 ls ,可以看到多个一个可执行文件led_test
121006itmxvx3nf9f9mnmo.png
使用命令,运行上述代码
./led_test
可以看到终端输出,
121006au2ooonbneav125u.png
到此树莓派GPIO基本操作结束,下面来对IIC接口屏幕进行操作。
############################
安装Adafruit-SSD1306 库,使用命令:
sudo pip3 install Adafruit-SSD1306
121006ofh7nd36xxndfl9y.png
安装成功,
切换路径到Downloads
cd
cd Dowmloads
然后开始下载Adafruit-SSD1306库的示例代码,使用命令:
sudo git clone
链接已隐藏,如需查看请登录或者注册
使用ls ,可以看到下载完毕
121006gm4f46m4av0f6fjs.png
然后进行安装,使用命令:
cd Adafruit_Python_SSD1306/
sudo python3 setup.py install
可以看到,
121006lqn9ud6du3u9xlxx.png
121006s1ds553fs5faugqg.png
使用命令ls查看当前文件夹内容,然后切换到例程文件夹
ls
cd examples/ 121006j5u8v5s8jjdnjsgv.png
先随便找个示例运行一下,键入命令:
sudo python3 stats.py
121006zfrgd88mydjyf8wz.png
提示缺少'Adafruit_BBIO'库,所以安装一下,使用命令
sudo pip3 install Adafruit_BBIO
121006b0ccfnk6teeefq9v.png
再次运行stats.py,
python3 stats.py
121006q6v8f2iv8lp2j2p8.jpg
可以看到OLED屏显示的IP、CPU负载、内存使用量、硬盘使用量等信息。
感觉有点不太对,显示的文字有变形,所以查看源码,
vim stats.py
发现
121006hzsnsd7jjssxzxil.png
库使用的是128*32的器件,所以把128*32屏蔽掉,打开128*64的
121006rltgos6z2g2vl8go.png
然后重新运行:
python3 stats.py
121006nuncoqyiy7yh77z1.jpg
此时运行正常。
如果出现下图,则说明OLED和树莓派接线有问题,检查接线。
121006nd9drhg96n272u65.png
至此,OLED显示的基础工作以及完成,后面就是修改人脸识别代码,在屏幕上显示相关信息。
#################################################
接下来就是将人脸识别的结果使用oled屏显示出来,首先将face_recogn.py复制一份命名为face_recogn1.py,然后将stats,py 的OLED初始化文件复制到face_recogn1.py中,同时导入OLED的库:
import time
import Adafruit_GPIO.SPI as SPI
import Adafruit_SSD1306
from PIL import ImageDraw
from PIL import ImageFont
然后在人脸识别结果中加入以下代码:
draw.rectangle((0,0,width,height),outline = 0,fill = 0)##清屏
disp.display()··##更新OLED数据
draw.text((0, top),str(id_), font=font, fill=255)
draw.text((0,top+16),str(name),font=font,fill=255)
disp.image(image1)
disp.display()
当人脸识别完成以后,在OLED的第一行显示人脸ID,第二行显示检测到的人脸名称。输入命令:
python3 face_recogn1.py
可以看到终端显示:
121006mozenognpzxernee.png
OLED屏显示为:
121006pmvs4ap9tg88l85a.jpg
放上范迪赛的照片
121006e597h7mtm5aaddh7.png
此时OELD屏显示:
121006vkdyk4amyskh7k6h.jpg
###############
至此,人脸识别和显示的基础功能进行完毕,后续内容将继续更新,不过可能会搁置一段时间,哈哈。
代码和训练的照片见附件。
test_camear.py (355 Bytes, 下载次数: 1)

最新回复

感谢楼主提供的技术分享,先收藏学习再发表个人意见,顶起来   详情 回复 发表于 2023-11-21 14:17

回复
举报

683

帖子

5

TA的资源

纯净的硅(高级)

感谢楼主提供的技术分享,先收藏学习再发表个人意见,顶起来


回复
您需要登录后才可以回帖 登录 | 注册

猜你喜欢
随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表