Python语言技术文档

微信小程序技术文档

php语言技术文档

jsp语言技术文档

asp语言技术文档

C#/.NET语言技术文档

html5/css技术文档

javascript

点击排行

您现在的位置:首页 > 技术文档 > Python人工智能

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

来源:中文源码网    浏览:190 次    日期:2024-03-24 13:43:29
【下载文档:  python中使用OpenCV进行人脸检测的例子.txt 】


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
import sys, osfrom opencv.cv import *from opencv.highgui import *from PIL import Image, ImageDrawfrom 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')

相关内容