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在Windows8下获取本机ip地址的方法
Mar 14 Python
Fiddler如何抓取手机APP数据包
Jan 22 Python
Python 两个列表的差集、并集和交集实现代码
Sep 21 Python
对python cv2批量灰度图片并保存的实例讲解
Nov 09 Python
python启动应用程序和终止应用程序的方法
Jun 28 Python
python处理excel绘制雷达图
Oct 18 Python
Python搭建代理IP池实现获取IP的方法
Oct 27 Python
基于python图像处理API的使用示例
Apr 03 Python
pandas.DataFrame.drop_duplicates 用法介绍
Jul 06 Python
python字典key不能是可以是啥类型
Aug 04 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
Jan 07 Python
Pytorch 中net.train 和 net.eval的使用说明
May 22 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 foreach 使用&amp;(与运算符)引用赋值要注意的问题
2010/02/16 PHP
PHP 二维数组根据某个字段排序的具体实现
2014/06/03 PHP
php提取字符串中网站url地址的方法
2014/12/03 PHP
js随机生成网页背景颜色的方法
2015/02/26 Javascript
JavaScript变量的作用域全解析
2015/08/14 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
2015/09/08 Javascript
通过Jquery.cookie.js实现展示浏览网页的历史记录超管用
2015/10/23 Javascript
总结在前端排序中遇到的问题
2016/07/19 Javascript
浅谈Vuex的状态管理(全家桶)
2017/11/04 Javascript
vue-router路由懒加载和权限控制详解
2017/12/13 Javascript
Vue2.0子同级组件之间数据交互方法
2018/02/28 Javascript
JavaScript设计模式之工厂模式简单实例教程
2018/07/03 Javascript
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
JSON字符串操作移除空串更改key/value的介绍
2019/01/05 Javascript
使用 Vue-TCB 快速在 Vue 应用中接入云开发的方法
2020/02/10 Javascript
python求斐波那契数列示例分享
2014/02/14 Python
python中(str,list,tuple)基础知识汇总
2018/02/20 Python
python实现猜数字小游戏
2020/03/24 Python
pyshp创建shp点文件的方法
2018/12/31 Python
pyQt5实时刷新界面的示例
2019/06/25 Python
python绘制随机网络图形示例
2019/11/21 Python
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
英国皇室御用百货:福南梅森(Fortnum & Mason)
2017/12/03 全球购物
匡威英国官网:Converse英国
2018/12/02 全球购物
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
华为消费者德国官方网站:HUAWEI德国
2020/11/03 全球购物
毕业生求职简历中的自我评价
2013/10/18 职场文书
幼儿园托班开学寄语
2014/01/18 职场文书
驾驶员岗位职责
2014/01/29 职场文书
学生感冒英文请假条
2014/02/04 职场文书
给学校的建议书范文
2014/05/15 职场文书
2014年扫黄打非工作总结
2014/12/03 职场文书
公司清洁工岗位职责
2015/04/15 职场文书
简单的辞职信范文(2016最新版)
2015/05/12 职场文书
毕业论文致谢信
2015/05/14 职场文书
css布局巧妙技巧之css三角示例的运用
2022/03/16 HTML / CSS