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实现web端用户登录和注册功能的教程
Apr 30 Python
简单理解Python中的装饰器
Jul 31 Python
简单实现Python爬取网络图片
Apr 01 Python
使用python 写一个静态服务(实战)
Jun 28 Python
对python 树状嵌套结构的实现思路详解
Aug 09 Python
pytorch三层全连接层实现手写字母识别方式
Jan 14 Python
Pycharm+Python工程,引用子模块的实现
Mar 09 Python
Python绘制组合图的示例
Sep 18 Python
安装pyinstaller遇到的各种问题(小结)
Nov 20 Python
Python修改DBF文件指定列
Dec 19 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
Jan 10 Python
Python实现生活常识解答机器人
Jun 28 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
德生9700DX电路分析
2021/03/02 无线电
PHP开发中的错误收集,不定期更新。
2011/02/03 PHP
YII视图整合kindeditor扩展的方法
2016/07/13 PHP
PHP编程获取各个时间段具体时间的方法
2017/05/26 PHP
Ruffy javascript 学习笔记
2009/11/30 Javascript
循环 vs 递归浅谈
2013/02/28 Javascript
js日期对象兼容性的处理方法
2014/01/28 Javascript
JavaScript中数据结构与算法(一):栈
2015/06/19 Javascript
AngularJS中的表单简单入门
2016/07/28 Javascript
js实现无缝循环滚动
2020/06/23 Javascript
JS实现的集合去重,交集,并集,差集功能示例
2018/03/13 Javascript
JavaScript 判断iPhone X Series机型的方法
2019/01/28 Javascript
vue实现短信验证码输入框
2020/04/17 Javascript
[05:09]2016国际邀请赛中国区预选赛淘汰赛首日精彩回顾
2016/06/29 DOTA
[01:59][TI9趣味视频] 全明星赛奖励
2019/08/23 DOTA
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
2016/06/14 Python
python下PyGame的下载与安装过程及遇到问题
2019/08/04 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
2019/08/20 Python
Python开发之pip安装及使用方法详解
2020/02/21 Python
使用darknet框架的imagenet数据分类预训练操作
2020/07/07 Python
Python 数据的累加与统计的示例代码
2020/08/03 Python
通过实例简单了解python yield使用方法
2020/08/06 Python
关于python3.9安装wordcloud出错的问题及解决办法
2020/11/02 Python
Manduka官网:瑜伽垫、瑜伽毛巾和服装
2018/07/02 全球购物
Made in Design英国:设计家具、照明、家庭装饰和花园家具
2019/09/24 全球购物
学校募捐倡议书
2014/05/14 职场文书
土建专业毕业生自荐书
2014/07/04 职场文书
加强作风建设工作总结
2014/10/23 职场文书
学校领导班子成员查摆问题及整改措施
2014/10/28 职场文书
先进个人总结范文
2015/02/15 职场文书
遗嘱范文
2015/08/07 职场文书
大学迎新生的欢迎词
2019/06/25 职场文书
Mysql 用户权限管理实现
2021/05/25 MySQL
victoriaMetrics库布隆过滤器初始化及使用详解
2022/04/05 Golang
Win11 引入 Windows 365 云操作系统,适应疫情期间混合办公模式:启动时直接登录、模
2022/04/06 数码科技
Python可视化神器pyecharts绘制地理图表
2022/07/07 Python