K210系列教程
使用MaixPy IDE开发K210
K210实现人脸识别(附代码解读)
K210人脸识别+人脸信息存储
K210人脸识别+RFID录入信息

在我的上一篇博客中已经介绍了如何使用K210实现基本的人脸识别功能
https://blog.csdn.net/HuangChen666/article/details/113995079?spm=1001.2014.3001.5501
今天和大家分享我是如何实现人脸特征值的断电存储的。


一、学会读写SD卡
首先确保SD卡是fat16或fat32格式(某些厂家的SD卡不适配k210的板子,这里请去官网查询),由于MaixPy是基于micorpython开发的,所以一些文件系统的操作都相差无几,下面给出一个读写SD卡的代码

import uos    #文件操作需要导入uos这个包
#读操作
with open("/sd/recordftr3.txt", "r") as f:while(1):line = f.readline()if not line:breakprint(line)
#写操作
with open("/sd/recordftr3.txt", "a") as f:f.write("aaaaaaaaa\n")

二、断电存储人脸特征的原理
所谓断电存储人脸特征,其实就是将人脸特征和人的信息(例如学号、姓名等)想办法关联起来,我这里用的方法比较容易想到,也比较普遍直接。

原理: 官网提供的源码中,是按下按键时将当前的特征值保存到record_ftrs列表中,这里注意的是record_ftrs列表是在代码中定义的,所以掉电会丢失,那么保存特征值的操作必在这里实现,看一下源码:

if key_pressed == 1: #如果检测到按键key_pressed = 0 #重置按键状态record_ftr = featurerecord_ftrs.append(record_ftr) #将当前特征添加到已知特征列表

如果你仔细阅读源码(结合注释)就会发现循环中的人脸特征赋给了feature变量,那么我们要做的就是加上一个把feature的值写入SD卡的代码
但是单单写入特征值还不能够实现人脸的识别功能,所以我的做法是把学号姓名和特征值一起按行写入SD卡,然后读出的时候按行读出,再把姓名append到names列表,特征值append到record_ftrs列表,这样两者的下标是对应的了,即可实现人脸识别也可以断电存储。


三、断电存储人脸特征的具体操作
直接上代码

#写入SD卡
with open("/sd/recordftr3.txt", "a") as f:f.write(strnum+'#'+strname+'#'+str(feature))  #信息写入SD卡record_ftrs.append(feature)                   #人脸特征追加到record_ftrs列表names.append(stu_num+'#'+stu_name)             #追加到姓名列表f.write("\n")f.close()

代码说明:
strnum:表示学号
strname:表示姓名

一定有同学好奇我这个学号和姓名是哪里来的,我其实是用的RFID射频识别,从事先准备好的IC卡中读取学号和姓名的信息,这一块如果有同学想要了解的可以评论区告诉我, 我会再写一期博客。

当然你们也可以取巧,事先在代码里拟定好一些伪姓名;或者使用其他方法,动动自己的小脑筋哦!

PS: 这里要注意的是写入后一定要再写入一个 “\n” ,因为我们以后要按行读出的学号姓名和特征值之所以能关联,是因为他们在同一行上。

#读取人脸信息和特征值
i = 0
temp_num = ''
with open("/sd/recordftr3.txt", "r") as f:while(1):line = f.readline()if not line:breakstu_num = line[0:line.index('#')]    #获取学号line = line[line.index('#')+1:]      #截取除了学号以外的字符串stu_name = line[0:line.index('#')]   #获取姓名names.append(stu_num+'#'+stu_name)   #追加到姓名列表line = line[line.index('#')+1:]      #截取人脸特征record_ftrs.append(eval(line))       #向人脸特征列表中添加已存特征if stu_num != temp_num:temp_num = stu_numi = i + 1print("%d:%s%s" % (i,stu_num,stu_name),line)

代码说明: 我保存人脸特征的格式是:学号#姓名#特征值,即以#隔开,所以读取的时候运用python独有的分割字符串的方法即可。

PS: 这里有个比较细节的地方,也算是个比较头疼的地方,已经有几个小伙伴被这个问题困扰,在这里一起说明一下。
如果你将人脸特征打印出来会发现它的类型是字节数组,但是你写入SD卡后再读出来它是字符串类型,这个时候还不能把它直接append到record_ftrs列表里,需要进行字符串–>字节数组的转换,我本人也是试了很多方法,最后发现使用eval方法即可。
当然写入的时候要以字符串格式写入,使用str方法即可,因为我是把它们拼接成了一个大的字符串,所以写入SD卡时要进行一个字节数组–>字符串的转换。

至此,人脸特征断电存储的功能就实现了,如果有疑问的地方,欢迎大家在评论区评论,或者也可以私信我。

K210人脸识别+人脸信息存储相关推荐

  1. 人脸识别_云端人脸识别-人脸识别SDK+API-人脸识别闸机解决方案

    云端人脸识别-人脸识别SDK+API-人脸识别闸机解决方案 人脸识别闸机-人脸识别闸机解决方案 软硬一体的人脸识别闸机解决方案,提升人员系统化管理的安全性与便捷性 方案构成 针对人员出入的闸机及门禁场 ...

  2. 虹软人脸识别 - 人脸特征数据的存取

    虹软人脸识别 - 人脸特征数据的存取 文章目录 虹软人脸识别 - 人脸特征数据的存取 一.简介 二.数据库应用 1. 连接数据库 2. 建表 3. 注册人脸并保存其特征值到数据库 4. 获取人脸特征数 ...

  3. 人脸反光识别和读数识别_云端人脸识别-人脸识别SDK+API-人脸识别闸机解决方案...

    云端人脸识别-人脸识别SDK+API-人脸识别闸机解决方案 人脸识别闸机-人脸识别闸机解决方案 软硬一体的人脸识别闸机解决方案,提升人员系统化管理的安全性与便捷性 方案构成 针对人员出入的闸机及门禁场 ...

  4. 微信小程序公众号支付宝小程序的登录授权、支付、分享、人脸识别人脸核身

    文章目录 一.微信小程序 1. 获取信息用户信息 2.支付 3.分享 4. 腾讯云小程序人脸核身 二.微信公众号 1.获取信息用户信息 2.支付 3. 分享(普通分享) 4.分享(vue单页面 配置分 ...

  5. CV之FR之MTCNN:基于TF框架利用MTCNN算法检测并对齐人脸图像进(人脸识别/人脸相似度)而得出人脸特征向量从而计算两张人脸图片距离案例应用之详细攻略

    CV之FR之MTCNN:基于TF框架利用MTCNN算法检测并对齐人脸图像进(人脸识别/人脸相似度)而得出人脸特征向量从而计算两张人脸图片距离案例应用之详细攻略 目录 基于TF框架利用MTCNN算法检测 ...

  6. iview 可以选择当天 禁用_人脸识别刚要普及,怎么就被禁用了?|人脸识别|人脸信息|世超|rekognition...

    点击播放 GIF 0.5M 人脸识别大家都不陌生了,从 iPhone 上面的 Face ID 再到支付宝刷脸支付,这个曾经只有在科幻电影上面才能见到的技术逐渐变得越来越司空见惯. 点击播放 GIF 0 ...

  7. 基于PCA 人脸识别/人脸识别算法/人脸检测程序源码MATLAB ELM+PCA人脸识别 PCA人脸识别matlab代码 基于PCA算法的人脸识别

    1.基于PCA的人脸识别代码 2.MATLAB ELM+PCA人脸识别 2.基于PCA的人脸识别(matlab)(采用PCA算法进行人脸识别,通过抽取人脸的主要成 分,构成特征脸空间,识别时将测试图像 ...

  8. 人脸识别 人脸实名认证

    首先: 注册百度云,并搜索人脸实名认证 第二步查看自己要请求的api 创建步骤: 添加一个人脸识别的人脸库 添加一个人脸用户组 添加一个人脸用户 给这个用户添加一张人像图 然后 渲染出 拍照页 前端: ...

  9. 人脸识别: 人脸数据集大全

    转自:http://blog.csdn.net/chenriwei2/article/details/50631212 公开人脸数据集 本页面收集到目前为止可以下载到的人脸数据库,可用于训练人脸深度学 ...

最新文章

  1. 九、OLTP 性能调整与优化--结语
  2. 被快乐×××的许晴-----平淡的生活中寻找快乐
  3. data.DataLoader 数据丢失 不能复用
  4. POJ - 3630 Phone List(字典树)
  5. 关于SQL优化这些你了解吗?
  6. antd vue关闭模态对话框_如何在Bootstrap项目中用Vue.js替代jQuery
  7. euv光刻机有什么用_有关EUV光刻机,你需要知道这些
  8. 打造个人专版为CMD加上一把锁
  9. 单片机pic的linux环境代替,pic单片机can总线协议收发编程
  10. javasocket编程(javasocket通信)
  11. 【工艺】集成电路中的工艺及其方式
  12. 利用腾讯云独立IP使用windows用CCProxy搭建Socks5多IP代理服务器图文教程实现单窗口单IP
  13. C语言 找数字,用(折半查找法或二分查找法)
  14. 笔记本显卡天梯图 2022
  15. android手机电池寿命,手机用多久换电池比较合适?
  16. vmware workstation 未能启动vmware
  17. py----Geany编辑器的安装_配置与使用
  18. 【Python】手把手教你用Python爬取某网小说数据,并进行可视化分析
  19. 台湾繁体字和大陆汉语转换
  20. 怎么选择合适的机柜?网络机柜服务器机柜

热门文章

  1. Windows系统中 UltraEdit 下载安装
  2. MD5制作绑带小技巧
  3. vb通过网址下载pdf
  4. asp源码爱好者福利,asp调用微信扫一扫代码,用asp写的调用微信内置扫一扫功能源码下载
  5. 音乐网站毕设进度记录
  6. vue 微信扫码登录嵌入方式及开发踩的坑点
  7. 训练集、验证集、测试集的作用和划分比例?
  8. 计算机毕设之基于Java的保险业务管理系统的设计与实现
  9. iOS百思不得姐、ARKit、旋转动画、立体相册源码等
  10. iOS不得姐项目--封装状态栏指示器(UIWindow实现)