一、硬件准备

1,树莓派3B

2,pi camera

3,工具:键盘、鼠标、显示器、SD卡读写器

二、SD卡烧录操作系统

1,U盘格式化软件 SDFormatterv4

2,系统烧写工具 Win32DiskImager

3,系统镜像文件 ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img

三、软件系统安装

1,测试相机

打开摄像头,预览几秒后保存一张图片。

#新建终端
raspistill -o mytest.jpg

或者终端输入:返回检测到的相机数量。

vcgencmd get_camera

2,python3安装

参考CSDN教程安装,完成后查看版本号:

python3 -V

3,opencv安装

sudo apt-get install libopencv-dev
sudo apt-get install python-opencv

完成后查看版本号:

pkg-config opencv --modversion

在python中添加cv2,并查看版本号:

python
import cv2
cv2.__version__

四、源码编写

1,人脸检测

import numpy as np
import cv2# multiple cascades: https://github.com/Itseez/opencv/tree/master/data/haarcascades
faceCascade = cv2.CascadeClassifier('Cascades/haarcascade_frontalface_default.xml')cap = cv2.VideoCapture(0)
cap.set(3,640) # set Width
cap.set(4,480) # set Heightwhile True:ret, img = cap.read()img = cv2.flip(img, -1)gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)faces = faceCascade.detectMultiScale(gray,scaleFactor=1.2,minNeighbors=5,     minSize=(20, 20))for (x,y,w,h) in faces:cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)roi_gray = gray[y:y+h, x:x+w]roi_color = img[y:y+h, x:x+w]cv2.imshow('video',img)k = cv2.waitKey(30) & 0xffif k == 27: # press 'ESC' to quitbreakcap.release()
cv2.destroyAllWindows()

2,人脸识别

数据库采集:


import cv2
import oscam = cv2.VideoCapture(0)
cam.set(3, 640) # set video width
cam.set(4, 480) # set video heightface_detector = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')# For each person, enter one numeric face id
face_id = input('\n enter user id end press <return> ==>  ')print("\n [INFO] Initializing face capture. Look the camera and wait ...")
# Initialize individual sampling face count
count = 0while(True):ret, img = cam.read()img = cv2.flip(img, -1) # flip video image verticallygray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)faces = face_detector.detectMultiScale(gray, 1.3, 5)for (x,y,w,h) in faces:cv2.rectangle(img, (x,y), (x+w,y+h), (255,0,0), 2)     count += 1# Save the captured image into the datasets foldercv2.imwrite("dataset/User." + str(face_id) + '.' + str(count) + ".jpg", gray[y:y+h,x:x+w])cv2.imshow('image', img)k = cv2.waitKey(100) & 0xff # Press 'ESC' for exiting videoif k == 27:breakelif count >= 30: # Take 30 face sample and stop videobreak# Do a bit of cleanup
print("\n [INFO] Exiting Program and cleanup stuff")
cam.release()
cv2.destroyAllWindows()

训练模型:

pip install opencv-contrib-python
import cv2
import numpy as np
from PIL import Image
import os# Path for face image database
path = 'dataset'recognizer = cv2.face.LBPHFaceRecognizer_create()
detector = cv2.CascadeClassifier("haarcascade_frontalface_default.xml");# function to get the images and label data
def getImagesAndLabels(path):imagePaths = [os.path.join(path,f) for f in os.listdir(path)]     faceSamples=[]ids = []for imagePath in imagePaths:PIL_img = Image.open(imagePath).convert('L') # convert it to grayscaleimg_numpy = np.array(PIL_img,'uint8')id = int(os.path.split(imagePath)[-1].split(".")[1])faces = detector.detectMultiScale(img_numpy)for (x,y,w,h) in faces:faceSamples.append(img_numpy[y:y+h,x:x+w])ids.append(id)return faceSamples,idsprint ("\n [INFO] Training faces. It will take a few seconds. Wait ...")
faces,ids = getImagesAndLabels(path)
recognizer.train(faces, np.array(ids))# Save the model into trainer/trainer.yml
recognizer.write('trainer/trainer.yml') # recognizer.save() worked on Mac, but not on Pi# Print the numer of faces trained and end program
print("\n [INFO] {0} faces trained. Exiting Program".format(len(np.unique(ids))))

后台开发:使用IDEA软件开发后台,接收树莓派上传的数据存储在mySQL数据库。

五、成果展示

机器视觉(三)树莓派自制人脸识别考勤机相关推荐

  1. 树莓派3B+ 人脸识别(OpenCV)

    树莓派3B+ 人脸识别(OpenCV) 相信大家都看了前面的OpenCV安装和人脸检测教程,已经跃跃欲试,想要进行人脸识别了,现在我们正式进入重头戏--人脸识别 的教程. 注意:该教程面向python ...

  2. 新手树莓派3B——人脸识别门禁管理系统

    文章目录 前言 一.怎么用树莓派设计人脸识别门禁系统? 二.树莓派系统的安装 三.远程连接 四.人脸识别 总结 前言 树莓派,自问世以来,其"麻雀虽小,五脏俱全"的微型电脑特征让无 ...

  3. 中艺人脸识别考勤机使用方法_人脸识别考勤机说明书.pdf

    人脸识别管理系统说明书 目 录 第一部分 使用概述 1 第一章 前言 1 第二章 安装说明 2 安装与连接2 使用环境需求5 使用流程6 开机6 第二部分 管理员配置与操作 8 第一章 配置管理员 8 ...

  4. [济南考勤机专题]考勤机类型(四)人脸识别考勤机

    [济南考勤机专题]考勤机类型(四)人脸识别考勤机 一.简介 人脸识别考勤机采用了现在国际科技领域上的高精技术--人脸识别技术(融合了计算机图像处理技术与生物统计学原理于一体).利用计算机图像处理技术技 ...

  5. 人脸识别考勤机行业现状、趋势及前景分析与预测

    人脸识别考勤机行业市场研报以该行业特征.市场供需现状.国际大环境及国内环境为基础,先后分析了人脸识别考勤机市场整体发展态势.人脸识别考勤机市场规模与增长率.产销和进出口变化趋势.行业竞争格局等,最后预 ...

  6. 中艺人脸识别考勤机使用方法_人脸识别考勤机的使用方法及注意事项 - 全文

    人脸识别考勤机概要 人脸识别考勤机是一种新型的存储类考勤机,事先只需采集员工的面像,并建立档案,当员工上下班站在人脸识别考勤机的识别区域内,考勤机上就会快速的记录考勤状况并保存记录. 人脸识别考勤机是 ...

  7. 中艺人脸识别考勤机使用方法_人脸识别考勤机的使用方法及注意事项

    人脸识别考勤机概要 人脸识别考勤机是一种新型的存储类考勤机,事先只需采集员工的面像,并建立档案,当员工上下班站在人脸识别考勤机的识别区域内,考勤机上就会快速的记录考勤状况并保存记录. 人脸识别考勤机是 ...

  8. 中艺人脸识别考勤机使用方法_人脸识别考勤机简单使用说明

    考勤机软件简单使用: 使用方法:  贵学校采用定时签到的考勤方式,因此需要班次类型为"签到班" .  已在管理电脑考勤软件[班次设置]上设定了签到班的多种签到班次形式.  在 ...

  9. 中艺人脸识别考勤机使用方法_人脸识别考勤机的使用方法

    展开全部 1."MENU" ->管理员验证,进入系统->登记用户->输入"工号"按OK->人脸图像采集,完62616964757a686 ...

最新文章

  1. Linux常用命令及技巧1
  2. 换脸火了,我用 Python 快速入门生成模型
  3. C语言经典例8-输出乘法口诀表
  4. obs可以推到中转服务器吗,[经验分享]OBS 如何实现多路推流
  5. python编码转换语句_好程序员Python教程之字符串编码知识小结
  6. python对字典的基本操作(遍历、排序)总结,Python字典操作简明总结
  7. 1014. Best Sightseeing Pair
  8. 洛谷P1396营救(最小生成树)
  9. Python学习笔记(四十六)网络编程(2)— UDP编程
  10. git hok json_从战中反弹:将Git提交信息作为JSON返回
  11. 漫话:为什么键盘以QWER排列,而不是ABCD?
  12. 前端笔试能查吗_鹅厂微博前端实习面经
  13. 网页中使用的特殊字体(webdings, wingdings 2)
  14. SQL Server更新联接概述
  15. 工控软件界面_工控主板能当电脑用吗?会怎么样?
  16. 用 JMeter 测试 MySQL 数据库
  17. 三维空间几何变换矩阵
  18. 数据结构_Java_基于 线性表-单链表的初始化、逆序、去重、非递减序列的合并(开辟新链表先整体插入一个链表全部元素,再遍历另外一个链表寻找合适位置插入 、开辟新链表实现舍弃原链表)等操作实现
  19. 在markdown中控制文字的颜色,背景色,字体大小,字体样式及颜色RGB转换工具链接
  20. windows访问控制列表ACL

热门文章

  1. 旋转矩阵中6保6_[转载]旋转矩阵中6保5公式
  2. 如何让手机的计算机能弹出音乐,电脑在待机状态下,也能跟手机一样正常播放音乐?...
  3. IOS常用的文件管理
  4. Latex向上取整/向下取整
  5. Android 自定义APP名称
  6. 功夫不负有心人,坚持总会有惊喜!
  7. PID整定之临界比例度法
  8. Linux常见命令赠送延时队列
  9. WebStorm 激活
  10. java version 7 下载_JDK 7u60 版本发布下载安装