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 相关文章推荐
利用Django框架中select_related和prefetch_related函数对数据库查询优化
Apr 01 Python
python+selenium实现京东自动登录及秒杀功能
Nov 18 Python
python爬虫爬取快手视频多线程下载功能
Feb 28 Python
python+selenium打印当前页面的titl和url方法
Jun 22 Python
对TensorFlow中的variables_to_restore函数详解
Jul 30 Python
Python中时间datetime的处理与转换用法总结
Feb 18 Python
JupyterNotebook设置Python环境的方法步骤
Dec 03 Python
Django生成PDF文档显示网页上以及PDF中文显示乱码的解决方法
Dec 17 Python
python argparse模块通过后台传递参数实例
Apr 20 Python
python实现马丁策略回测3000只股票的实例代码
Jan 22 Python
python读取图片颜色值并生成excel像素画的方法实例
Feb 19 Python
Python Django ORM连表正反操作技巧
Jun 13 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
再次研究下cache_lite
2007/02/14 PHP
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
2013/07/01 PHP
初识php MVC
2014/09/10 PHP
浅析PHP关键词替换的类(避免重复替换,保留与还原原始链接)
2015/09/22 PHP
PHP的swoole扩展安装方法详细教程
2016/05/18 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
php微信公众号开发之现金红包
2018/04/16 PHP
DWR Ext 加载数据
2009/03/22 Javascript
基于MooTools的很有创意的滚动条时钟动画
2010/11/14 Javascript
javascript作用域和闭包使用详解
2014/04/25 Javascript
JavaScript的内存释放问题详解
2015/01/21 Javascript
javascript中FOREACH数组方法使用示例
2016/03/01 Javascript
基于javascript实现表格的简单操作
2016/05/21 Javascript
使用Browserify来实现CommonJS的浏览器加载方法
2017/05/14 Javascript
JS实现下拉菜单列表与登录注册弹窗效果
2017/08/10 Javascript
JavaScript轮播停留效果的实现思路
2018/05/24 Javascript
Element图表初始大小及窗口自适应实现
2020/07/10 Javascript
element el-table表格的二次封装实现(附表格高度自适应)
2021/01/19 Javascript
python网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)
2014/06/09 Python
python使用multiprocessing模块实现带回调函数的异步调用方法
2015/04/18 Python
python中类的输出或类的实例输出为这种形式的原因
2019/08/12 Python
Numpy的简单用法小结
2019/08/28 Python
使用python的turtle函数绘制一个滑稽表情
2020/02/28 Python
关于python3.9安装wordcloud出错的问题及解决办法
2020/11/02 Python
什么是URL
2015/12/13 面试题
工程造价与财务管理专业应届生求职信
2013/10/06 职场文书
自考自我鉴定范文
2013/10/30 职场文书
会计自我鉴定
2014/02/04 职场文书
竞选大队长演讲稿
2014/04/29 职场文书
报考公务员诚信承诺书
2014/08/29 职场文书
县政府领导班子四风问题对照检查材料思想汇报
2014/09/26 职场文书
晚自修旷课检讨书怎么写
2014/11/17 职场文书
优秀党员个人总结
2015/02/14 职场文书
2015年女生节活动总结
2015/02/27 职场文书
Mysql如何实现不存在则插入,存在则更新
2022/03/25 MySQL
Android Rxjava3 使用场景详解
2022/04/07 Java/Android