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语言编写电脑时间自动同步小工具
Mar 08 Python
python+mysql实现简单的web程序
Sep 11 Python
详解python中asyncio模块
Mar 03 Python
详解Python判定IP地址合法性的三种方法
Mar 06 Python
详解python tkinter教程-事件绑定
Mar 28 Python
详解Python中的各种转义符\n\r\t
Jul 10 Python
python中的TCP(传输控制协议)用法实例分析
Nov 15 Python
Python脚本去除文件的只读性操作
Mar 05 Python
Python2手动安装更新pip过程实例解析
Jul 16 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
Oct 12 Python
学会用Python实现滑雪小游戏,再也不用去北海道啦
May 20 Python
关于Python中进度条的六个实用技巧分享
Apr 05 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 处理TXT文件(打开/关闭/检查/读取)
2013/05/13 PHP
深入php常用函数的使用汇总
2013/06/08 PHP
PHP 关于访问控制的和运算符优先级介绍
2013/07/08 PHP
Php中使用Select 查询语句的实例
2014/02/19 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
2014/09/27 PHP
php从数据库查询结果生成树形列表的方法
2015/04/17 PHP
PHP微信开发之二维码生成类
2015/06/26 PHP
JS判断对象是否存在的10种方法总结
2013/12/23 Javascript
JS保留两位小数,多位小数的示例代码
2014/01/07 Javascript
Javascript学习笔记之 对象篇(三) : hasOwnProperty
2014/06/24 Javascript
JavaScript前端开发之实现二进制读写操作
2015/11/04 Javascript
jQuery过滤选择器用法示例
2016/09/12 Javascript
配置nodejs环境的方法
2017/05/13 NodeJs
vue移动端微信授权登录插件封装的实例
2018/08/28 Javascript
微信小程序在地图选择地址并返回经纬度简单示例
2018/12/03 Javascript
vue+element实现打印页面功能
2019/05/20 Javascript
详解Vue3中对VDOM的改进
2020/04/23 Javascript
el-form 多层级表单的实现示例
2020/09/10 Javascript
Python使用scrapy采集时伪装成HTTP/1.1的方法
2015/04/08 Python
简单的python后台管理程序
2017/04/13 Python
Flask框架学习笔记之使用Flask实现表单开发详解
2019/08/12 Python
python破解bilibili滑动验证码登录功能
2019/09/11 Python
Python内置数据类型list各方法的性能测试过程解析
2020/01/07 Python
python实现图片转字符画的完整代码
2021/02/21 Python
纯CSS3实现的8种Loading动画效果
2014/07/05 HTML / CSS
泰国时尚电商:POMELO Fashion
2020/03/11 全球购物
物流专业大学生的自我鉴定
2013/11/13 职场文书
幼儿园教师个人反思
2014/01/30 职场文书
教研活动总结
2014/04/28 职场文书
公司年终奖分配方案
2014/06/16 职场文书
创优争先心得体会
2014/09/11 职场文书
2014年信访工作总结
2014/11/17 职场文书
幼儿园门卫安全责任书
2015/05/08 职场文书
详解CocosCreator项目结构机制
2021/04/14 Javascript
Win11安装受阻怎么办? Windows11安装问题与解决方案汇总
2021/11/21 数码科技
使用Canvas绘制一个游戏人物属性图
2022/03/25 Javascript