【计算机视觉】Opencv中的Face Detection using Haar Cascades

标签(空格分隔): 【图像处理】


声明:引用请注明出处http://blog.csdn.net/lg1259156776/


五种典型的haar-like特征,为何能用来检测人脸,人眼呢?

它给出的一个经验之谈是

1. the region of the eyes is often darker than the region of the nose and cheeks

2. the eyes are darker than the bridge of the nose

但是这样的window在别的地方特征就不明显了,那么如何从160000+的features中选择最好的特征呢:它说采用Adaboost。



We select the features with minimum error rate, which means they are the features that best classifies the face and non-face images.

其实就是adaboost的过程,选择最小错误率的特征,实际上是提高错分图像的权重,然后再进行classification,然后计算新的错误率和新的权重,一直到达到精度或者需要的特征数量足够为止。

所以,最终的分类器实际上是这些弱分类器的加权和,之所以被称之为weak,说的就是它们单独工作可能不能分类,但是一起可以组成较强的分类器。论文中说,甚至200个特征就可以达到95%的精度。

它们最后建立了6000个特征,但是考虑到图像的大部分区域都不是人脸,所以最好还是用一个简单的方法判断是不是人来你,如果不是就直接扔掉,不再对该window进行后续的处理。这样就可以进一步的降低时间消耗。

这种思想真是值得借鉴,因为有点类似TLD中的方差分类器,方差分类器的作用就是通过快速的第一步淘汰掉一半的样本,然后使得进入后续分类器的样本数量减少,有助于提高速率。

利用haar-cascade detection,opencv中可以直接从xml文件中导入训练好的参数,并先进行人脸检测,然后在人脸位置开窗,检测人眼。就这样easy:

import numpy as np
2 import cv2
3
4 face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
5 eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
6
7 img = cv2.imread('sachin.jpg')
8 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 1 faces = face_cascade.detectMultiScale(gray, 1.3, 5)
2 for (x,y,w,h) in faces:
3 cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
4 roi_gray = gray[y:y+h, x:x+w]
5 roi_color = img[y:y+h, x:x+w]
6 eyes = eye_cascade.detectMultiScale(roi_gray)
7 for (ex,ey,ew,eh) in eyes:
8 cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)
9
10 cv2.imshow('img',img)
11 cv2.waitKey(0)
12 cv2.destroyAllWindows()


2015-11-05 调试记录 张朋艺

【计算机视觉】Opencv中的Face Detection using Haar Cascades的更多相关文章

  1. Object Detection: Face Detection using Haar Cascades

    目录   利用基于Haar特征的级联分类器实现人脸检测:官方教程 目标 学习基于Haar特征的级联分类器(Cascade Callifiers)实现人脸检测: 扩展到人眼检测: 基础知识 Paul V ...

  2. 对OpenCV中Haar特征CvHaarClassifierCascade等结构理解

    首先说一下这个级联分类器,OpenCV中级联分类器是根据VJ 04年的那篇论文(Robust Real-Time Face Detection)编写的,查看那篇论文,知道构建分类器的步骤如下: 1.根 ...

  3. 【计算机视觉】关于OpenCV中GPU配置编译的相关事项

    [计算机视觉]关于OpenCV中GPU配置编译的相关事项 标签(空格分隔): [计算机视觉] 前一段发现了OpenCV中关于GPU以及opencl的相关知识,打算升级一下对OpenCV的使用,但是发现 ...

  4. 【计算机视觉】【并行计算与CUDA开发】OpenCV中GPU模块使用

    CUDA基本使用方法 在介绍OpenCV中GPU模块使用之前,先回顾下CUDA的一般使用方法,其基本步骤如下: 1.主机代码执行:2.传输数据到GPU:3.确定grid,block大小: 4.调用内核 ...

  5. Opencv中integral计算积分图

    Paul Viola和Michael Jones在2001年首次将积分图应用在图像特征提取上,在他们的论文"Rapid Object Detection using a Boosted Ca ...

  6. opencv中的SIFT,SURF,ORB,FAST 特征描叙算子比较

    opencv中的SIFT,SURF,ORB,FAST 特征描叙算子比较 参考: http://wenku.baidu.com/link?url=1aDYAJBCrrK-uk2w3sSNai7h52x_ ...

  7. openCV中IplImage的使用

    http://blog.csdn.net/welcome_xu/article/details/7650680 IplImage结构详细分析   IplImage 结构解读: typedef stru ...

  8. 图像金字塔及其在 OpenCV 中的应用范例(下)

    前言 本文将主要讲解如何使用 OpenCV 实现图像分割,这也是图像金字塔在 OpenCV 中的一个重要应用. 关于图像分割 在计算机视觉领域,图像分割(Segmentation)指的是将数字图像细分 ...

  9. 立体视觉-opencv中立体匹配相关代码

    三种匹配算法比较 BM算法: 该算法代码: view plaincopy to clipboardprint? CvStereoBMState *BMState = cvCreateStereoBMS ...

随机推荐

  1. BZOJ 3925: [Zjoi2015] 地震后的幻想乡(概率DP)

    这里有一篇很好很强的博客%%% YouSiki大佬的博客 多理解一会就行了- 代码 #include <bits/stdc++.h> using namespace std; typede ...

  2. 使用Django 测试客户端一起测试视图,模板和URL

    Django 测试客户端 self.client.get(url)  测试客户端是Django中TestCase类的一个属性名. 至此已经在网站中可以创建一个清单了. 那么,现在是可以在unit te ...

  3. Java 相同类型强制转换异常

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/u010750497/article/det ...

  4. P4178 Tree 点分治

    思路:点分治 提交:1次 题解: 要求权值和\(\leq K\) 的路径,我们可以类比点分治的模板,把长为\(len\)是否存在,改为\(len\)的路径的条数,并用用树状数组维护前缀和,这样就可以求 ...

  5. 关系型数据库与NoSQL的对比

    SQL(结构化的查询语言)数据库是过去四十年间存储数据的主要方式.20世纪90年代末随着Web应用和MySQL.PostgreSQL和SQLite等开源数据库的兴起,用户爆炸式的增长. NoSQL数据 ...

  6. Java进阶知识21 Spring的AOP编程

    1.概述 Aop:(Aspect Oriented Programming)面向切面编程          功能: 让关注点代码与业务代码分离! 关注点:重复代码就叫做关注点:切面: 关注点形成的类, ...

  7. CF55D Beautiful numbers (数位dp)

    题目链接 题解 一个数能被一些数整除,那么一定被这些数的\(lcm\)整除 那么我们容易想到根据\(lcm\)设状态 我们可以发现有用的\(lcm\)只有\(48\)个 那么按照一般的数位\(dp\) ...

  8. Java分布式互联网架构/微服务/高性能/springboot/springcloud 2018年10月17日直播内容

    2018年10月17日直播内容 大规模并发必备的消息中间件技术ActiveMq 网盘链接: https://pan.baidu.com/s/1GlxsZ2JnrvX- YN16-S7lQw 提取码: ...

  9. gitlab 配置.ssh实现免密登陆

    首次配置gitlab的.ssh时 安装gitbash 通过gitbash 配置.ssh 打开gitbash,输入如下命令生成ssh,邮箱换成自己的 ssh-keygen -t rsa -C " ...

  10. redis几种模式的部署(Windows下实现)

    <参考>http://www.cnblogs.com/ruiati/p/6374152.html 1.   自行下载redis客户端.redis官方不支持Windows系统,所以官网上是下 ...