搜索
bottom↓
回复: 12

基于树莓派的人脸识别代码分享

[复制链接]

出0入0汤圆

发表于 2016-2-4 22:15:29 | 显示全部楼层 |阅读模式
本帖最后由 jackwmj12 于 2016-2-4 22:39 编辑

代码基于树莓派B+硬件,python2.7平台下的opencv3.0例程改编。
好了,废话不多说,下面发布源码:
# -*- 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

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

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2016-2-4 22:25:43 | 显示全部楼层
  faceRects = classfier.detectMultiScale(image, 1.2, 2,
      cv2.CASCADE_SCALE_IMAGE, minSize)
训练好的样本?

出0入0汤圆

发表于 2016-2-4 22:25:50 | 显示全部楼层
赞!!!!

出0入0汤圆

 楼主| 发表于 2016-2-4 22:37:03 | 显示全部楼层
本帖最后由 jackwmj12 于 2016-2-4 22:39 编辑
pll19840511 发表于 2016-2-4 22:25
faceRects = classfier.detectMultiScale(image, 1.2, 2,
      cv2.CASCADE_SCALE_IMAGE, minSize)
训练 ...


是的,而且我这里用的是官方库里的眼睛识别,因为脸部识别计算量有点大,对于判断头部的方向,眼睛就够用了,如果需要脸部识别,那就把haarcascade_eye.xml改成haarcascade_frontalface_alt.xml就可以了

出100入101汤圆

发表于 2016-2-4 22:55:16 来自手机 | 显示全部楼层
库很强大

出0入0汤圆

发表于 2016-2-4 23:05:28 | 显示全部楼层
很好很强大

出0入0汤圆

发表于 2016-2-4 23:12:54 来自手机 | 显示全部楼层
python在图像视觉方面好强大

出0入0汤圆

发表于 2016-2-4 23:29:06 来自手机 | 显示全部楼层
opencv支持很多种语言的调用,用python的这么多,是为什么呢?我一直写c和c++,看过些java,不懂python。

出0入0汤圆

发表于 2016-2-4 23:29:10 来自手机 | 显示全部楼层
厉害啊,眼睛都能识别出来啊

出0入618汤圆

发表于 2016-2-5 00:09:11 | 显示全部楼层
sbusr 发表于 2016-2-4 23:29
opencv支持很多种语言的调用,用python的这么多,是为什么呢?我一直写c和c++,看过些java,不懂python。 ...

因为python解释型语言,同时又能比较方便的用C语言扩展,还有大量的第三方开源中间件,用来搭框架很方便。

出0入0汤圆

发表于 2017-4-13 16:07:11 | 显示全部楼层
想在树莓派上做简单的人脸识别,学习!

出0入0汤圆

发表于 2017-4-13 16:28:55 | 显示全部楼层
python上有个opencv封装成的simpleCV  很好用
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 12:45

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表