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发布模块的步骤分享
Feb 21 Python
在Pycharm中自动添加时间日期作者等信息的方法
Jan 16 Python
linux环境中没有网络怎么下载python
Jul 07 Python
使用Python调取任意数字资产钱包余额功能
Aug 15 Python
Pandas-Cookbook 时间戳处理方式
Dec 07 Python
Pytorch模型转onnx模型实例
Jan 15 Python
PyQt使用QPropertyAnimation开发简单动画
Apr 02 Python
详解Pycharm与anaconda安装配置指南
Aug 25 Python
如何基于Python pygame实现动画跑马灯
Nov 18 Python
Python 中如何使用 virtualenv 管理虚拟环境
Jan 21 Python
Python实现查询剪贴板自动匹配信息的思路详解
Jul 09 Python
Python实现对齐打印 format函数的用法
Apr 28 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
phpcms模块开发之swfupload的使用介绍
2013/04/28 PHP
两千行代码的PHP学习笔记汇总
2014/10/05 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
2017/03/14 PHP
php操作redis常见方法示例【key与value操作】
2020/04/14 PHP
jquery图片上下tab切换效果
2011/03/18 Javascript
使用node.js 获取客户端信息代码分享
2014/11/26 Javascript
JS获取iframe中longdesc属性的方法
2015/04/01 Javascript
JavaScript获取网页中第一个图片id的方法
2015/04/03 Javascript
JavaScript实现经典排序算法之插入排序
2016/12/28 Javascript
Javascript中数组去重与拍平的方法示例
2017/02/03 Javascript
jQuery插件HighCharts实现的2D堆条状图效果示例【附demo源码下载】
2017/03/14 Javascript
Webpack3+React16代码分割的实现
2021/03/03 Javascript
python批量同步web服务器代码核心程序
2014/09/01 Python
整理Python中的赋值运算符
2015/05/13 Python
numpy.std() 计算矩阵标准差的方法
2018/07/11 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
2019/03/11 Python
详解python中init方法和随机数方法
2019/03/13 Python
使用python将mysql数据库的数据转换为json数据的方法
2019/07/01 Python
解决IDEA 的 plugins 搜不到任何的插件问题
2020/05/04 Python
基于PyQT实现区分左键双击和单击
2020/05/19 Python
python使用建议技巧分享(三)
2020/08/18 Python
Python项目打包成二进制的方法
2020/12/30 Python
韩国邮政旗下生鲜食品网上超市:epost
2016/08/27 全球购物
中国跨境电子商务网站:NewFrog
2018/03/10 全球购物
Hashtable 添加内容的方式有哪几种,有什么区别?
2012/04/08 面试题
一套Delphi的笔试题一
2016/02/14 面试题
计算机开发个人求职信范文
2013/09/26 职场文书
建筑实习自我鉴定
2013/10/18 职场文书
护理学中专毕业生求职信
2013/11/11 职场文书
学校三八妇女节活动总结
2015/02/06 职场文书
上帝也疯狂观后感
2015/06/09 职场文书
住房公积金贷款工资证明
2015/06/12 职场文书
趣味运动会赞词
2015/07/22 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书
golang特有程序结构入门教程
2021/06/02 Python
CSS使用Flex和Grid布局实现3D骰子
2022/08/05 HTML / CSS