python中使用OpenCV进行人脸检测的例子

 更新时间:2014年04月18日 09:31:02   作者:  
这篇文章主要介绍了python中使用OpenCV进行人脸检测的例子,需要的朋友可以参考下

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利用shutil模块实现文件的裁剪与压缩

    Python利用shutil模块实现文件的裁剪与压缩

    shutil可以简单地理解为sh+util ,shell工具的意思。shutil模块是对os模块的补充,主要针对文件的拷贝、删除、移动、压缩和解压操作。本文将利用这一模块实现文件的裁剪、压缩与解压缩,需要的可以参考一下
    2022-05-05
  • matplotlib实现区域颜色填充

    matplotlib实现区域颜色填充

    这篇文章主要为大家详细介绍了matplotlib实现区域颜色填充,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • Python字符串中的单词反转的实现示例

    Python字符串中的单词反转的实现示例

    在Python中,要将字符串中的单词进行反转,本文主要介绍了Python字符串中的单词反转的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-04-04
  • Django跨域请求CSRF的方法示例

    Django跨域请求CSRF的方法示例

    这篇文章主要介绍了Django跨域请求CSRF的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • python isinstance函数用法详解

    python isinstance函数用法详解

    这篇文章主要介绍了python isinstance函数用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • python写日志封装类实例

    python写日志封装类实例

    这篇文章主要介绍了python写日志封装类,实例分析了Python操作日志的相关技巧,需要的朋友可以参考下
    2015-06-06
  • python jupyter入门教程

    python jupyter入门教程

    Jupyter Notebook是一个开源的Web应用程序,允许用户创建和共享包含代码、方程式、可视化和文本的文档,今天通过本文给大家分享python jupyter入门教程,需要的朋友一起看看吧
    2021-08-08
  • Python时间管理黑科技之datetime函数详解

    Python时间管理黑科技之datetime函数详解

    在Python中,datetime模块是处理日期和时间的标准库,它提供了一系列功能强大的函数和类,用于处理日期、时间、时间间隔等,本文将深入探讨datetime模块的使用方法,感兴趣的可以了解下
    2023-08-08
  • python使用openpyxl读取合并单元格的值

    python使用openpyxl读取合并单元格的值

    本文主要介绍了python使用openpyxl读取合并单元格的值,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • 分享8个非常流行的 Python 可视化工具包

    分享8个非常流行的 Python 可视化工具包

    喜欢用 Python 做项目的小伙伴不免会遇到这种情况:做图表时,用哪种好看又实用的可视化工具包呢?今天小编给大家分享8个非常流行的 Python 可视化工具包,需要的朋友可以参考下
    2019-06-06

最新评论