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计算文本文件行数的方法
Jul 06 Python
在Python中使用正则表达式的方法
Aug 13 Python
Python 实现购物商城,含有用户入口和商家入口的示例
Sep 15 Python
pycharm运行程序时在Python console窗口中运行的方法
Dec 03 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
Dec 04 Python
django框架forms组件用法实例详解
Dec 10 Python
如何基于线程池提升request模块效率
Apr 18 Python
python编写softmax函数、交叉熵函数实例
Jun 11 Python
如何利用Python 进行边缘检测
Oct 14 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
Feb 03 Python
Python实现批量自动整理文件
Mar 16 Python
Python turtle编写简单的球类小游戏
Mar 31 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新手上路(十一)
2006/10/09 PHP
PHP操作文件方法问答
2007/03/16 PHP
PHP初学者最感迷茫的问题小结
2010/03/27 PHP
php实现读取和写入tab分割的文件
2015/06/01 PHP
PHP读取文件内容的五种方式
2015/12/28 PHP
jQuery常见开发技巧详细整理
2013/01/02 Javascript
js 弹出框只弹一次(二次修改之后的)
2013/11/26 Javascript
小米公司JavaScript面试题
2014/12/29 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
2015/05/16 Javascript
JS使用eval解析JSON的注意事项分析
2015/11/14 Javascript
如何使用AngularJs打造权限管理系统【简易型】
2016/05/09 Javascript
通过npm引用的vue组件使用详解
2017/03/02 Javascript
原生JS+Canvas实现五子棋游戏实例
2017/06/19 Javascript
基于jQuery实现的Ajax 验证用户名唯一性实例代码
2017/06/28 jQuery
基于vue 实现token验证的实例代码
2017/12/14 Javascript
JS实现前端页面的搜索功能
2018/06/12 Javascript
微信小程序自定义弹窗wcPop插件
2018/11/19 Javascript
解决layui调用自定义方法提示未定义的问题
2019/09/14 Javascript
js构造函数constructor和原型prototype原理与用法实例分析
2020/03/02 Javascript
js实现简单抽奖功能
2020/11/24 Javascript
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
2020/10/22 Javascript
Python中super关键字用法实例分析
2015/05/28 Python
python去除文件中重复的行实例
2018/06/29 Python
在Python中获取两数相除的商和余数方法
2018/11/10 Python
Python学习笔记之自定义函数用法详解
2019/06/08 Python
canvas拼图功能实现代码示例
2018/11/21 HTML / CSS
世界上最大的汽车共享网站:Zipcar
2017/01/14 全球购物
数控专业应届生求职信
2013/11/27 职场文书
舞蹈教育学专业求职信
2014/06/29 职场文书
中秋节活动总结
2014/08/29 职场文书
个人对照检查剖析材料
2014/10/13 职场文书
2015年度党员自我评价范文
2015/03/03 职场文书
幼儿园班级工作总结2015
2015/05/25 职场文书
汽车车尾标语大全
2015/08/11 职场文书
python 用递归实现通用爬虫解析器
2021/04/16 Python
MySQL中的全表扫描和索引树扫描
2022/05/15 MySQL