硬件:树莓派 B+

先安装python-opencv:

sudo apt-get install python-opencv

Python 2.7   OpenCV3.0

然后在树莓派usb端口插入一个通用的usb摄像头,看系统是否自动识别并已经安装驱动。

一般linux下免驱,如果没有驱动,可以更新update系统。

然后有两种方法检测摄像头是否被良好的正常驱动:

1. 在根目录下输入ls /dev,查看目录下是否存在video0这个设备。有则表示系统已识别。

2. 输入lsusb查看usb挂载设备;如下有1e4e那就是有摄像头了:

然后安装截图软件fswebcam进行摄像头测试,可配合web服务器实现图片监控;

apt-get install fswebcam

为实现自动拍照,可新建脚本cam.sh并chmod +x设置权限到最大,让系统自动执行。

然后加入cronjob使该脚本每分钟自动运行一次。
Cron 是UNIX,SOLARIS,LINUX下的一个十分有用的工具。通过Cron脚本能使计划任务定期地在系统后台自动运行。这种计划任务在UNIX,SOLARIS, LINUX下术语为cron jobs。
“crontab -e” 指令表示,编辑该用户的crontab,当指定crontab 不存在时新建。

*/1 * * * * /home/pi/cam.sh

加入上述语句表示每分钟执行一次。然后保存crontab即可看到图像更新。

web端效果:

然后准备用MPEGStreamer发布流媒体视频到本地网页,供查看:

分以下几个步骤:

1。 安装mjpeg库:sudo apt-get install libv4l-dev libjpeg8-dev imagemagick

2。 使用SVN从SourceForge上编译MPEGStreamer这个开源项目:

或者直接下载整套代码压缩包mjpg-streamer_svn_r182.tar.gz,自行编译;

之后把压缩包复制到/home/pi目录下:

cp mjpg-streamer_svn_r182.tar.gz /home/pi

解压该压缩包,到mjpg-streamer目录下:

tar zxvf mjpg-streamer_svn_r182.tar.gz

软连接现在的libjpeg8版本的库到libjpeg7依赖:
ln -s /usr/include/libv4l1-videodev.h /usr/include/linux/videodev.h

最后进入源代码目录并编译:

编译完毕后即告成功!!!

功能测试,执行:
sudo ./mjpg_streamer -i “./input_uvc.so -d /dev/video0  -r 1280×720 -f 12” -o “./output_http.so -p 8090 -w ./www”
(-r后是分辨率参数,-f后面是帧率,请根据您的摄像头参数进行调整)

# -*- coding: utf-8 -*-
import cv2.cv as cv 
import cv2 
import numpy as np
from cv2 import VideoCapture 
from video import create_capture
from common import clock,draw_str

#cv.NamedWindow("W1", cv.CV_WINDOW_AUTOSIZE) 
cv2.namedWindow("W1")
#cv2.ResizeWindow("video", 600, 600)
capture = cv2.VideoCapture(0)
success,frame=capture.read() 
color=(0,0,255)
classfier = cv2.CascadeClassifier("/home/opencv/data/haarcascades/haarcascade_eye.xml")

def repeat():  
    succes,frame = capture.read()
    image_size =frame.shape[:2] 
    #print image_size
    image = np.zeros(image_size, dtype=np.float16)
    image = cv2.cvtColor(frame, cv2.cv.CV_BGR2GRAY)
    hi,wi=image_size
    minSize=(wi/8,hi/8)
    image=cv2.equalizeHist(image)
    #storage = cv2.CvMemStorage(0)
   # cv2.rectangle(frame, (210, 0), (210, 480),(0,0,255))  
    cv2.line(frame, (210,0),(210,480), (0,255,255),1) 
    cv2.line(frame, (420,0),(420,480), (0,255,255),1) 
    cv2.line(frame, (0,160),(640,160), (0,255,255),1) 
    cv2.line(frame, (0,320),(640,320), (0,255,255),1) 
   # detect objects 
   # faces = cv.HaarDetectObjects(image, cascade, storage, 1.2, 
   #   2,cv.CV_HAAR_DO_CANNY_PRUNING,(100, 100))
    faceRects = classfier.detectMultiScale(image, 1.2, 2,
      cv2.CASCADE_SCALE_IMAGE, minSize)

for (x,y,w,h) in faceRects:
       # print x,y
        if x<210:
            print "right"
        elif x>310:
            print "left"
        cv2.rectangle(frame, (x,y), (x+w,y+h), (0,128,0))
    #    cv.ShowImage("W1", greyscale)
    #    cv.ShowImage("W1", frame)
    cv2.imshow("W1",frame)  
while True: 
    repeat() 
    c = cv2.waitKey(10) 
    c=chr(c & 255)
    if c in['q','Q',chr(27)]: 
        #cv2.VideoCapture(0).release() 
        cv2.destroyWindow("W1") 
        break

该例程可以识别眼睛,在眼睛部位画上绿色的小框框,并把人脸的转移方向输出在树莓派终端。

如果需要脸部识别,那就把haarcascade_eye.xml改成haarcascade_frontalface_alt.xml就可以了

附:人脸识别.py

#!/usr/bin/python
# -*- coding: UTF-8 -*-# face_detect.py# Face Detection using OpenCV. Based on sample code from:
# http://python.pastebin.com/m76db1d6b# Usage: python face_detect.py <image_file>import sys, os
from opencv.cv import *
from opencv.highgui import *
from PIL import Image, ImageDraw
from math import sqrtdef detectObjects(image):"""Converts an image to grayscale and prints the locations of any faces found"""grayscale = cvCreateImage(cvSize(image.width, image.height), 8, 1)cvCvtColor(image, grayscale, CV_BGR2GRAY)storage = cvCreateMemStorage(0)cvClearMemStorage(storage)cvEqualizeHist(grayscale, grayscale)cascade = cvLoadHaarClassifierCascade('/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml',cvSize(1,1))faces = cvHaarDetectObjects(grayscale, cascade, storage, 1.1, 2,CV_HAAR_DO_CANNY_PRUNING, cvSize(20,20))result = []for f in faces:result.append((f.x, f.y, f.x+f.width, f.y+f.height))return resultdef grayscale(r, g, b):return int(r * .3 + g * .59 + b * .11)def process(infile, outfile):image = cvLoadImage(infile);if image:faces = detectObjects(image)im = Image.open(infile)if faces:draw = ImageDraw.Draw(im)for f in faces:draw.rectangle(f, outline=(255, 0, 255))im.save(outfile, "JPEG", quality=100)else:print "Error: cannot detect faces on %s" % infileif __name__ == "__main__":process('input.jpg', 'output.jpg')

树莓派用Python+OpenCV做人脸识别相关推荐

  1. python opencv 人体/人脸识别 简易demo

    前言 参考文章: pythonopencv检测行人_[图像处理]使用OpenCV实现人脸和行人检测 Python如何实现行人识别-人体识别 本文主要讲述关于opencv官方提供的现成模型,采取Hog特 ...

  2. python+opencv实现人脸识别|采用现成训练好的模型

    一.图片人脸检测(opencv) 1.安装opencv环境 介绍windows中opencv在python3上的实现,我的系统环境win10+python3.6+opcv3.4.1 首先去网站下载Op ...

  3. python人脸识别opencv_用python和opencv 做人脸识别

    网上找的代码,运行之后,发现没有描述的功能.test1窗口打开之后,并不能识别人脸.本人初学,希望大家不吝赐教,在此谢过 import cv2 import numpy as np cv2.named ...

  4. python读取视频流做人脸识别_基于 Python + OpenCV 进行人脸识别,视频追踪代码全注释...

    1 #-*- coding: utf-8 -*- 2 from __future__ importunicode_literals3 #操作文件 4 importos5 #科学计算 6 importn ...

  5. 基于Python+OpenCV的人脸识别实现带墨镜效果

    环境以及执行步骤 相关介绍 环境配置 相关库安装介绍 上代码 github地址 动图介绍 改进 相关介绍 你好! 项目起初来源于一本科生的毕业设计,由于我给了一版更加优秀,所以初始版本的例子给予分享. ...

  6. python+opencv的人脸识别+语音播报集成的模拟人脸打卡系统的编程思路

      1.前言   人脸打卡系统实现的功能是:刷张三的脸并提示打卡成功,想满足这个条件首先要有张三的图像制成的分类器,外加上一个判断语句做成的语音播报,语音播报有相关的第三方库,所以让他发出声音只需要刷 ...

  7. python opencv 视频人脸识别

    It is not right ofthe sun to shine.Everyone can. 发光不是太阳的权利 每个人都可以 关于opencv我就不再多说了上链接 opencv中文http:// ...

  8. OpenCV图像人脸识别人数统计

    Python+OpenCV图像人脸识别人数统计 如需远程调试,可加QQ905733049由专业技术人员远程协助! 运行代码如下: #!/usr/bin/python # -*- coding: utf ...

  9. Python OpenCV车道线识别侦测

    Python OpenCV车道线识别侦测 如需安装运行环境或远程调试,可加QQ905733049, 或QQ2945218359由专业技术人员远程协助! 运行结果如下: 代码如下: import cv2 ...

最新文章

  1. 使用二代矫正三代全长转录组数据
  2. FusionCharts Free(3)
  3. phoneGap工程的创建
  4. Struts2之struts-2.3.20开发环境的搭建并实现第一个Hello World小应用
  5. 6、Fiddler的基本界面
  6. matlab 排列组合
  7. Form表单 jQuery 文件上传
  8. 原型设计工具Pencil的使用
  9. 这四本第四届橙瓜网络文学奖体育竞技分类前五的作品不能不看!
  10. 对冲基金小镇 鬼城_未来系统,代码寿命和网络鬼城
  11. 计算机专业论文要怎么写,计算机专业本科生论文摘要怎么写 计算机专业本科生论文摘要范文参考...
  12. 态势感知“裸奔”的中国人 | 专访 360 张翀斌
  13. c语言编译器tc2.0,深入认识 Turbo C 编译器 C语言 TC2.0.doc
  14. reboot Linux 命令使用,linux中的reboot命令的详细解释
  15. QTableView中添加icon
  16. 【搜索】搜刷刷题整理
  17. 拼多多市值再次超越京东:进攻才是最好的防守!
  18. Android: Jetpack Compose如何禁用涟漪(水波纹)效果
  19. 第二个显示器、副屏 显示错位、模糊、有源信号分辨率 不匹配
  20. Android 面试真题收录~

热门文章

  1. 计算机组成原理-第一章(1)-概述
  2. html果壳网文本框,打造你的个人网站:CSS来助你美化页面
  3. IC设计工程师的职业规划
  4. 通信端口感叹号_解决通用串行总线控制器总是有感叹号的办法
  5. 金丝桃素白蛋白纳米粒-大肠杆菌血清抗体复合物|凝血因子Ⅷ人血清白蛋白HSA纳米粒|地奥司明人血清白蛋白纳米粒
  6. 【Python】面向对象,封装
  7. 基于VUE的SSR技术-姜威-专题视频课程
  8. 织梦dedecms响应式精密机械模具公司网站模板(自适应手机移动端)
  9. 计算机四级网络工程师属于什么职称,计算机四级网络工程师和软考网络工程师有什么区别...
  10. (6)电报机与继电器