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中使用urllib2获取http请求状态码的代码例子
Jul 07 Python
Python 'takes exactly 1 argument (2 given)' Python error
Dec 13 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
Jan 04 Python
Python元组及文件核心对象类型详解
Feb 11 Python
python3 unicode列表转换为中文的实例
Oct 26 Python
Python这样操作能存储100多万行的xlsx文件
Apr 16 Python
Python调用.NET库的方法步骤
Dec 27 Python
用pandas划分数据集实现训练集和测试集
Jul 20 Python
10张动图学会python循环与递归问题
Feb 06 Python
python 模块重载的五种方法
Apr 24 Python
Python爬虫之爬取二手房信息
Apr 27 Python
python opencv通过按键采集图片源码
May 20 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无限遍历目录示例
2014/02/21 PHP
laravel框架的安装与路由实例分析
2019/10/11 PHP
laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
2019/10/16 PHP
WebGame《逆转裁判》完整版 代码下载(1月24日更新)
2007/01/29 Javascript
hover的用法及live的用法介绍(鼠标悬停效果)
2013/03/29 Javascript
js遍历、动态的添加数据的小例子
2013/06/22 Javascript
无限树Jquery插件zTree的常用功能特性总结
2014/09/11 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
2018/09/19 Javascript
基于Fixed定位的框选功能的实现代码
2019/05/13 Javascript
vue和H5 draggable实现拖拽并替换效果
2020/07/29 Javascript
React 条件渲染最佳实践小结(7种)
2020/09/27 Javascript
[16:27]DOTA2 HEROS教学视频教你分分钟做大人-艾欧
2014/06/11 DOTA
Python学习笔记(一)(基础入门之环境搭建)
2014/06/05 Python
Python中类型检查的详细介绍
2017/02/13 Python
PyTorch学习笔记之回归实战
2018/05/28 Python
python pandas 如何替换某列的一个值
2018/06/09 Python
python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
2019/07/04 Python
python简单实现矩阵的乘,加,转置和逆运算示例
2019/07/10 Python
Python 画出来六维图
2019/07/26 Python
python实现读取excel文件中所有sheet操作示例
2019/08/09 Python
基于MATLAB和Python实现MFCC特征参数提取
2019/08/13 Python
Python 多线程,threading模块,创建子线程的两种方式示例
2019/09/29 Python
Python计算公交发车时间的完整代码
2020/02/12 Python
python logging.basicConfig不生效的原因及解决
2020/02/20 Python
详解python爬取弹幕与数据分析
2020/11/14 Python
CSS3改变浏览器滚动条样式
2019/01/04 HTML / CSS
植物选择:Botanic Choice
2017/02/15 全球购物
夏洛特和乔治婴儿和儿童时装精品店:Charlotte and George
2018/06/06 全球购物
英国DIY汽车维修配件网站:DIY Car Service Parts
2019/08/30 全球购物
临床医学专业学生的自我评价分享
2013/11/21 职场文书
员工培训心得体会
2013/12/30 职场文书
幼儿园教师请假制度
2014/01/16 职场文书
高中毕业生登记表自我鉴定范文
2014/03/18 职场文书
大学生党员自我评价范文
2014/04/09 职场文书
宾馆卫生管理制度
2015/08/06 职场文书
关于践行三严三实的心得体会
2016/01/05 职场文书