2016-7-17 19:50:22 [显示全部楼层]
5559浏览
查看: 5559|回复: 8

[项目] 树莓派+opencv(0)-->应用(0)

[复制链接]
本帖最后由 Code 于 2016-7-17 20:08 编辑

本贴的开发环境的安装,请查看我的另一篇帖子
本帖将介绍利用opencv进行基础的人脸检测,这里将用到的 OpenCV 类和函数有:CascadeClassifier,detectMultiScale。整个检测流程可以这样说利用样本的 Haar特征进行分类器训练,得到级联分类器,加载训练好的人脸分类器,利用分类器在视频帧中查找人脸区域。
Harr特征:
所谓Haar特征,其实就是在窗口的某个位置取一个矩形的小块,然后将这个矩形小块划分为黑色和白色两部分,并分别对两部分所覆盖的像素点(图像上的每个点称为一个像素)的灰度值求和,最后用白色部分像素点灰度值的和减去黑色部分像素点灰度值的和,得到一个Haar特征的值。
树莓派+opencv(0)-->应用(0)图1
Haar特征反映了局部区域之间的相对明暗关系,能够为人脸和非人脸的区分提供有效的信息,例如眼睛区域比周围的皮肤区域要暗,通过Haar特征就可以将这一特点表示出来。

上面是背景的基本介绍,感兴趣的同学可以更加深入探究一下,但是不懂这些背景故事也没事,下面将介绍怎么具体应用。


首先确保你已经在你的树莓派上完成了环境的配置工作,现在新建个py文件(名字你自取)。代码如下(特征文件帖子最后有下载):

  1. <div><font size="4"><b><div class="blockcode"><blockquote># -*- coding: utf-8 -*-
  2. import cv2
  3. import numpy as np
  4. print('Press Esc to exit')
  5. faceCascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') #加载特征文件,使用级联分类器
  6. faceimage = cv2.imread("lena.jpg") #读取lena.jpg文件,要实验人脸检测,可以自行替换相关有正面人脸照片
  7. gray = cv2.cvtColor(faceimage, cv2.COLOR_BGR2GRAY) #将彩色图片转换为灰度图
  8. faces = faceCascade.detectMultiScale(gray, 1.3, 5)#将要检测图片灰度图输入,进行人脸检测,输出人脸的区域顶点及长宽值
  9. print faces
  10. print len(faces)
  11. print faceimage.shape
  12. for (z,(x, y, w, h)) in enumerate(faces): #返回索引及元素:enumerate()
  13. cv2.rectangle(faceimage, (x, y), (x+w, y+h), (np.random.randint(0,255), np.random.randint(0,255), np.random.randint(0,255)), 2)#画出人脸区域矩形框
  14. cv2.putText(faceimage, "Face #{}".format(z + 1), (x, y - 10),cv2.FONT_HERSHEY_SIMPLEX, 0.55, (0, 0, 255), 2)#输出文字
  15. cv2.imshow('FaceDetect', faceimage) #显示图像
  16. cv2.waitKey(0)
复制代码

保存文件,在lx终端上输入

python 你的文件.py

应该就有这样的效果:

树莓派+opencv(0)-->应用(0)图2

特征文件下载:
下载附件haarcascade_frontalface_default.zip





Code  中级技师
 楼主|

发表于 2016-7-17 20:09:27

果然不该这个点发吗?
回复

使用道具 举报

joyyazi  初级技师

发表于 2016-7-18 07:42:48

不错。。。
请教python和c那个好用。
回复

使用道具 举报

Code  中级技师
 楼主|

发表于 2016-7-18 09:04:54

joyyazi 发表于 2016-7-18 07:42
不错。。。
请教python和c那个好用。

效率来说肯定是c高的,但是以我来说python好理解。
回复

使用道具 举报

visionsl  初级技匠

发表于 2016-7-18 13:40:11

能直接用? 下午我来测试一把
回复

使用道具 举报

joyyazi  初级技师

发表于 2016-7-18 14:25:50


回复

使用道具 举报

joyyazi  初级技师

发表于 2016-7-18 14:26:24

我想做上面视频里面的分拣opencv好做吗
回复

使用道具 举报

visionsl  初级技匠

发表于 2016-7-18 16:37:45

果然可以喔, 厉害
回复

使用道具 举报

凌风清羽  中级技匠

发表于 2016-7-22 19:02:56

有时间好好学习一下openCV
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail