python中使用OpenCV进行人脸检测的例子


Posted in Python onApril 18, 2014

OpenCV的人脸检测功能在一般场合还是不错的。而ubuntu正好提供了python-opencv这个包,用它可以方便地实现人脸检测的代码。

写代码之前应该先安装python-opencv:

$ sudo apt-get install python-opencv

具体原理就不多说了,可以参考一下这篇文章。直接上源码。

#!/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 sqrt
def 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 result
def 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" % infile
if __name__ == "__main__":
    process('input.jpg', 'output.jpg')
Python 相关文章推荐
在Python中使用M2Crypto模块实现AES加密的教程
Apr 08 Python
利用Celery实现Django博客PV统计功能详解
May 08 Python
用tensorflow实现弹性网络回归算法
Jan 09 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
May 09 Python
解决python xlrd无法读取excel文件的问题
Dec 25 Python
用python一行代码得到数组中某个元素的个数方法
Jan 28 Python
Python3之不使用第三方变量,实现交换两个变量的值
Jun 26 Python
Python中查看变量的类型内存地址所占字节的大小
Jun 26 Python
python实现两张图片拼接为一张图片并保存
Jul 16 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
Oct 09 Python
Django创建一个后台的基本步骤记录
Oct 02 Python
Python实现EM算法实例代码
Oct 04 Python
在python的WEB框架Flask中使用多个配置文件的解决方法
Apr 18 #Python
Python操作json数据的一个简单例子
Apr 17 #Python
python使用ctypes模块调用windowsapi获取系统版本示例
Apr 17 #Python
python调用windows api锁定计算机示例
Apr 17 #Python
python实现监控windows服务并自动启动服务示例
Apr 17 #Python
解决python写的windows服务不能启动的问题
Apr 15 #Python
Python和php通信乱码问题解决方法
Apr 15 #Python
You might like
十大催泪虐心动漫电影,有几部你还没看
2020/03/04 日漫
php实现图片添加水印功能
2014/02/13 PHP
php绘制圆形的方法
2015/01/24 PHP
php实现复制移动文件的方法
2015/07/29 PHP
php简单随机字符串生成方法示例
2017/04/19 PHP
采用CSS和JS,刚好我最近有个站点要用到下拉菜单!
2006/06/26 Javascript
破解Session cookie的方法
2006/07/28 Javascript
[IE&amp;FireFox兼容]JS对select操作
2007/01/07 Javascript
JS 如果改变span标签的是否隐藏属性
2011/10/06 Javascript
jQuery拖动div、移动div、弹出层实现原理及示例
2014/04/08 Javascript
jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点
2015/12/01 Javascript
JS跨域交互(jQuery+php)之jsonp使用心得
2016/07/01 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
2016/07/27 Javascript
ionic实现带字的toggle滑动组件
2016/08/27 Javascript
vuejs 单文件组件.vue 文件的使用
2017/07/28 Javascript
浅谈mvvm-simple双向绑定简单实现
2018/04/18 Javascript
JS实现动态生成html table表格的方法分析
2018/07/11 Javascript
微信小程序之多列表的显示和隐藏功能【附源码】
2018/08/06 Javascript
JavaScript Math对象和调试程序的方法分析
2019/05/13 Javascript
npm全局环境变量配置详解
2020/12/15 Javascript
Python通过Django实现用户注册和邮箱验证功能代码
2017/12/11 Python
python 等差数列末项计算方式
2020/05/03 Python
Python selenium如何打包静态网页并下载
2020/08/12 Python
详解scrapy内置中间件的顺序
2020/09/28 Python
python 第三方库paramiko的常用方式
2021/02/20 Python
全球领先的各类汽车配件零售商:Advance Auto Parts
2016/08/26 全球购物
寻找迷宫的一条出路,o通路;X:障碍
2016/07/10 面试题
车辆安全检查制度
2014/01/12 职场文书
办理生育手续介绍信
2014/01/14 职场文书
商场父亲节活动方案
2014/08/27 职场文书
大学生党员个人对照检查材料范文
2014/09/25 职场文书
行政主管岗位职责
2015/02/03 职场文书
2015年七七事变78周年纪念活动方案
2015/05/06 职场文书
2015年“我们的节日·中秋节”活动总结
2015/07/30 职场文书
2015年国培研修感言
2015/08/01 职场文书
解析在浏览器地址栏输入一个URL后发生了什么
2021/06/21 Servers