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 31 Python
python之DataFrame实现excel合并单元格
Feb 22 Python
python实现排序算法解析
Sep 08 Python
通过python爬虫赚钱的方法
Jan 29 Python
Opencv-Python图像透视变换cv2.warpPerspective的示例
Apr 11 Python
Python3中_(下划线)和__(双下划线)的用途和区别
Apr 26 Python
Python爬取豆瓣视频信息代码实例
Nov 16 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
Apr 26 Python
Python代码中如何读取键盘录入的值
May 27 Python
使用Python pip怎么升级pip
Aug 11 Python
python xlsxwriter模块的使用
Dec 24 Python
Python OpenCV超详细讲解基本功能
Apr 02 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
国产动画《伍六七》原声大碟大卖,啊哈娱乐引领音乐赋能IP的新尝试
2020/03/08 国漫
理解php Hash函数,增强密码安全
2011/02/25 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
PHP实现无限分类的实现方法
2016/11/14 PHP
Yii框架页面渲染操作实例详解
2019/07/19 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
javascript 动态加载 css 方法总结
2009/07/11 Javascript
JQuery 选择器 xpath 语法应用
2010/05/13 Javascript
jQuery 开发者应该注意的9个错误
2012/05/03 Javascript
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
jQuery实现类似淘宝购物车全选状态示例
2013/06/26 Javascript
js 浏览本地文件夹系统示例代码
2013/10/24 Javascript
Js参数值中含有单引号或双引号问题的解决方法
2013/11/06 Javascript
jQuery获取对象简单实现方法小结
2014/10/30 Javascript
浅谈js常用内置方法和对象
2016/09/24 Javascript
vue中锚点的三种方法
2018/07/06 Javascript
40行代码把Vue3的响应式集成进React做状态管理
2020/05/20 Javascript
vue prop传值类型检验方式
2020/07/30 Javascript
[13:40]TI3青蛙君全程回顾 DOTA2我们为梦想再战
2013/09/13 DOTA
[02:12]Dota 2 推出全新英雄—— 电炎绝手
2019/08/23 DOTA
Python中return语句用法实例分析
2015/08/04 Python
深入解析python中的实例方法、类方法和静态方法
2019/03/11 Python
详解Python的循环结构知识点
2019/05/20 Python
如何安装2019Pycharm最新版本(详细教程)
2019/09/26 Python
python上selenium的弹框操作实现
2020/07/13 Python
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
2012/12/09 HTML / CSS
护理学毕业生自荐信
2013/10/02 职场文书
毕业生自我推荐
2013/11/04 职场文书
服务之星获奖感言
2014/01/21 职场文书
我的老师教学反思
2014/05/01 职场文书
村党支部书记承诺书
2014/05/29 职场文书
大学生个人求职信
2014/06/02 职场文书
2014年卫生工作总结
2014/11/27 职场文书
2016年度优秀辅导员事迹材料
2016/02/26 职场文书
SpringBoot读取Resource下文件的4种方法
2021/07/02 Java/Android
pandas中关于apply+lambda的应用
2022/02/28 Python