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中给List添加元素的4种方法分享
Nov 28 Python
Python中使用Queue和Condition进行线程同步的方法
Jan 19 Python
Centos Python2 升级到Python3的简单实现
Jun 21 Python
[原创]Python入门教程3. 列表基本操作【定义、运算、常用函数】
Oct 30 Python
对Xpath 获取子标签下所有文本的方法详解
Jan 02 Python
python远程连接MySQL数据库
Apr 19 Python
python networkx 包绘制复杂网络关系图的实现
Jul 10 Python
python文件处理fileinput使用方法详解
Jan 02 Python
Python-openCV读RGB通道图实例
Jan 17 Python
Python类中self参数用法详解
Feb 13 Python
Cpython解释器中的GIL全局解释器锁
Nov 09 Python
Python中request的基本使用解决乱码问题
Apr 12 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
php利用header函数实现文件下载时直接提示保存
2009/11/12 PHP
PHP字符串word末字符实现大小写互换的方法
2014/11/10 PHP
PHP内存缓存Memcached类实例
2014/12/08 PHP
PHP实现统计在线人数功能示例
2016/10/15 PHP
PHP API接口必备之输出json格式数据示例代码
2017/06/27 PHP
php接口隔离原则实例分析
2019/11/11 PHP
通过javascript获取iframe里的值示例代码
2013/06/24 Javascript
JavaScript?Apple设备检测示例代码
2013/11/15 Javascript
javascript实现2048游戏示例
2014/05/04 Javascript
js用typeof方法判断undefined类型
2014/07/15 Javascript
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
2015/01/01 NodeJs
js实现Select列表内容自动滚动效果代码
2015/08/20 Javascript
javascript日期格式化方法汇总
2015/10/04 Javascript
jquery实现具有收缩功能的垂直导航菜单
2016/02/16 Javascript
JavaScript简单生成 N~M 之间随机数的方法
2017/01/13 Javascript
angularjs实现简单的购物车功能
2017/09/21 Javascript
Element Input组件分析小结
2018/10/11 Javascript
微信小程序页面间传值与页面取值操作实例分析
2019/04/30 Javascript
js tab栏切换代码实例解析
2019/09/03 Javascript
JavaScript使用prototype属性实现继承操作示例
2020/05/22 Javascript
使用eslint和githooks统一前端风格的技巧
2020/07/29 Javascript
[01:18:43]2014 DOTA2华西杯精英邀请赛5 24 iG VS DK
2014/05/25 DOTA
[03:42]2014DOTA2国际邀请赛 第三日比赛排位扑朔迷离
2014/07/12 DOTA
[19:26]TNC vs EG (BO3)
2018/06/07 DOTA
python 域名分析工具实现代码
2009/07/15 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
2018/01/04 Python
python命令行参数用法实例分析
2019/06/25 Python
Python中bisect的使用方法
2019/12/31 Python
利用Python脚本实现自动刷网课
2020/02/03 Python
澳洲本土太阳镜品牌:Quay Australia
2019/07/29 全球购物
应届大学生自荐书
2014/06/17 职场文书
停水通知
2015/04/16 职场文书
广播体操比赛主持词
2015/06/29 职场文书
2016年七夕情人节宣传语
2015/11/25 职场文书
2016年小学端午节活动总结
2016/04/01 职场文书
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers