树莓派学习(三)基于OpenCv的人脸识别
https://www.cnblogs.com/Pyrokine/p/8921285.html
扩大TF卡的空间,如果不做这步操作,后面会出问题,比如卡死
sudo raspi-config
sudo apt -get update
sudo apt -get upgrade
sudo apt-get install build-essential cmake git pkg-config
sudo apt-get install libjpeg8-dev
// 安装tif格式图像工具包
sudo apt-get install libtiff5-dev
// 安装JPEG-2000图像工具包
sudo apt-get install libjasper-dev
// 安装png图像工具包
sudo apt-get install libpng12-dev
安装gtk2.0(树莓派很可能下载错误,更换中科大或者清华源即可):
sudo apt-get install libgtk2.0-dev
sudo apt-get install libatlas-base-dev gfortran
// 下载OpenCV
wget -O opencv-3.4.1.zip https://github.com/Itseez/opencv/archive/3.4.1.zip
// 解压OpenCV
unzip opencv-3.4.1.zip
// 下载OpenCV_contrib库:
wget -O opencv_contrib-3.4.1.zip https://github.com/Itseez/opencv_contrib/archive/3.4.1.zip
// 解压OpenCV_contrib库:
unzip opencv_contrib-3.4.1.zip
之后我们新建一个名为release的文件夹用来存放cmake编译时产生的临时文件:
设置cmake编译参数,安装目录默认为/usr/local ,注意参数名、等号和参数值之间不能有空格,但每行末尾“\”之前有空格,参数值最后是两个英文的点:
// CMAKE_BUILD_TYPE是编译方式,CMAKE_INSTALL_PREFIX是安装目录,OPENCV_EXTRA_MODULES_PATH是加载额外模块,INSTALL_PYTHON_EXAMPLES是安装官方python例程,BUILD_EXAMPLES是编译例程(这两个可以不加,不加编译稍微快一点点,想要C语言的例程的话,在最后一行前加参数INSTALL_C_EXAMPLES=ON \)sudo cmake -D CMAKE_BUILD_TYPE=RELEASE \-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4.1/modules \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=ON ..
-D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=ON ..
// 编译,以管理员身份,否则容易出错
sudo make
// 安装
sudo make install
// 更新动态链接库
sudo ldconfig
// 更新动态链接库
sudo ldconfig
1
2
3
|
sudo apt-get install python-pip
sudo apt-get install python-dev
sudo pip install picamera
|
from picamera.array import PiRGBArray
from picamera import PiCamera
from functools import partialimport multiprocessing as mp
import cv2
import os
import time### Setup #####################################################################os.putenv( 'SDL_FBDEV', '/dev/fb0' )resX = 320
resY = 240cx = resX / 2
cy = resY / 2os.system( "echo 0=150 > /dev/servoblaster" )
os.system( "echo 1=150 > /dev/servoblaster" )xdeg = 150
ydeg = 150# Setup the camera
camera = PiCamera()
camera.resolution = ( resX, resY )
camera.framerate = 60# Use this as our output
rawCapture = PiRGBArray( camera, size=( resX, resY ) )# The face cascade file to be used
face_cascade = cv2.CascadeClassifier('/home/pi/opencv-2.4.9/data/lbpcascades/lbpcascade_frontalface.xml')t_start = time.time()
fps = 0### Helper Functions ##########################################################def get_faces( img ):gray = cv2.cvtColor( img, cv2.COLOR_BGR2GRAY )faces = face_cascade.detectMultiScale( gray )return faces, imgdef draw_frame( img, faces ):global xdegglobal ydegglobal fpsglobal time_t# Draw a rectangle around every facefor ( x, y, w, h ) in faces:cv2.rectangle( img, ( x, y ),( x + w, y + h ), ( 200, 255, 0 ), 2 )cv2.putText(img, "Face No." + str( len( faces ) ), ( x, y ), cv2.FONT_HERSHEY_SIMPLEX, 0.5, ( 0, 0, 255 ), 2 )tx = x + w/2ty = y + h/2if ( cx - tx > 15 and xdeg <= 190 ):xdeg += 1os.system( "echo 0=" + str( xdeg ) + " > /dev/servoblaster" )elif ( cx - tx < -15 and xdeg >= 110 ):xdeg -= 1os.system( "echo 0=" + str( xdeg ) + " > /dev/servoblaster" )if ( cy - ty > 15 and ydeg >= 110 ):ydeg -= 1os.system( "echo 1=" + str( ydeg ) + " > /dev/servoblaster" )elif ( cy - ty < -15 and ydeg <= 190 ):ydeg += 1os.system( "echo 1=" + str( ydeg ) + " > /dev/servoblaster" )# Calculate and show the FPSfps = fps + 1sfps = fps / (time.time() - t_start)cv2.putText(img, "FPS : " + str( int( sfps ) ), ( 10, 10 ), cv2.FONT_HERSHEY_SIMPLEX, 0.5, ( 0, 0, 255 ), 2 ) cv2.imshow( "Frame", img )cv2.waitKey( 1 )### Main ######################################################################if __name__ == '__main__':pool = mp.Pool( processes=4 )fcount = 0camera.capture( rawCapture, format="bgr" ) r1 = pool.apply_async( get_faces, [ rawCapture.array ] ) r2 = pool.apply_async( get_faces, [ rawCapture.array ] ) r3 = pool.apply_async( get_faces, [ rawCapture.array ] ) r4 = pool.apply_async( get_faces, [ rawCapture.array ] ) f1, i1 = r1.get()f2, i2 = r2.get()f3, i3 = r3.get()f4, i4 = r4.get()rawCapture.truncate( 0 ) for frame in camera.capture_continuous( rawCapture, format="bgr", use_video_port=True ):image = frame.arrayif fcount == 1:r1 = pool.apply_async( get_faces, [ image ] )f2, i2 = r2.get()draw_frame( i2, f2 )elif fcount == 2:r2 = pool.apply_async( get_faces, [ image ] )f3, i3 = r3.get()draw_frame( i3, f3 )elif fcount == 3:r3 = pool.apply_async( get_faces, [ image ] )f4, i4 = r4.get()draw_frame( i4, f4 )elif fcount == 4:r4 = pool.apply_async( get_faces, [ image ] )f1, i1 = r1.get()draw_frame( i1, f1 )fcount = 0fcount += 1rawCapture.truncate( 0 )
保存为.py文件直接在树莓派图形界面下打开执行
树莓派学习(三)基于OpenCv的人脸识别相关推荐
- 树莓派 --- 基于OpenCV实现人脸识别
目录 参考博客 调百度人脸识别的API也能达到目的,我这里是基于OpenCV进行人脸识别 OpenCV(Open source Computer Vision Library) 是一个开源的计算机视觉 ...
- 【优秀毕设】基于OpenCV的人脸识别打卡/签到/考勤管理系统(最简基本库开发、可基于树莓派)
[优秀毕设]基于OpenCV的人脸识别打卡/签到/考勤管理系统(最简基本库开发.可基于树莓派) 该系统利用Harr级联检测和LPBH进行人脸检测和训练.识别 利用Tkinter完成界面搭建 利用Fla ...
- 基于OpenCV实现人脸识别--Python
目录 前言 第一章 OpenCV介绍 第二章 功能描述 2.1 对已有的数据进行检测 2.2 陌生人检测并发出警告 2.3 保存陌生人的视频 2.4 输入图片进行检测 2.5 现场录用信息 第三章 功 ...
- 基于OpenCV的人脸识别自助商店(源码&部署视频)
1.模块功能介绍 实现人脸识别模块.人脸登录与注册功能.商店显示和用户余额页显示功能 用GUl图形界面实现(pyqt)语言python windows下软件pycharm 1.用户登录模块:刷脸登录 ...
- Python基于OpenCV的人脸识别自助商店(源码&部署视频)
1.模块功能介绍 实现人脸识别模块.人脸登录与注册功能.商店显示和用户余额页显示功能 用GUl图形界面实现(pyqt)语言python windows下软件pycharm 1.用户登录模块:刷脸登录 ...
- 基于OpenCV的人脸识别系统的pyhon源代码
本论文主要阐述了基于OpenCV的人脸识别原型系统.基于生物特征识别的身份认证方法有指纹.掌纹.眼睛虹膜.人脸等,其中,由于人脸的稳定性和可见性,人脸识别的研究与应用成为热点,本文针对出租公寓安全管理 ...
- 【人工智能毕设之基于opencv的人脸识别智能考勤管理系统
[人工智能毕设之基于opencv的人脸识别智能考勤管理系统-哔哩哔哩] https://b23.tv/slzvS7e
- 【计算机视觉】基于OpenCV的人脸识别
一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenCV 已被广泛运用在各种项目上,从 ...
- Python 毕业设计 - 基于 opencv 的人脸识别上课考勤系统,附源码
一.简介 这个人脸识别考勤签到系统是基于大佬的人脸识别陌生人报警系统二次开发的. 项目使用Python实现,基于OpenCV框架进行人脸识别和摄像头硬件调用,同时也用OpenCV工具包处理图片.交互界 ...
- 基于OpenCV的人脸识别考勤系统
考勤系统设计 学生上课考勤系统最初的方式是采用的人工纸质点名,目前仍旧有一部分学校依旧采用此种方法点名,这种方法也一直是被认为最有效的签到点名方式.但由于课程繁多加上学生人数众多, 代替点名现象普遍存 ...
最新文章
- 35 w年薪,入职CV算法岗,我一个双非本科生如何做到的?
- Online Learning场景下实时新闻热点机器学习训练实践
- 洛谷精选 - 字符串合集
- 简单易懂的 pwnable.kr 第三题[bof]Writeupt
- Canvas事件绑定
- asterisk1.8启动信息分析(未完)
- 【Zookeeper学习】Apache Zookeeper项目简介
- mysql change column_Modify column Vs change column
- RabbitMQ基础知识详解
- 灰色预测模型 matlab人口预测模型代码如下
- mybatis支持拼音、汉字模糊查询
- 计算机水平等级全称,全国计算机等级考试介绍
- LiteIDE的sublime黑色 淡绿色 配色文件自定义版本
- sicily 1007. To and Fro(破译密码)
- 2019北航夏令营保研经验及体会
- php cgi.sock 502,nginx中unix:/tmp/php-cgi.sock错误解决解决
- JAVA毕业设计web唐院寻人表白系统计算机源码+lw文档+系统+调试部署+数据库
- 整型数转换为字符串的itoa()函数C语言实现
- 【xposed】真机安装xposed框架给掉坑里了
- java安卓百度地图查找便利店_Android 百度地图POI搜索功能实例代码