本文实例为大家分享了Python人脸识别的具体代码,供大家参考,具体内容如下
1.利用opencv库
1
2
3
|
sudo apt - get install libopencv - *
sudo apt - get install python - opencv
sudo apt - get install python - numpy
|
2 .Python实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
import os
import os
from PIL import Image,ImageDraw
import cv
def detect_object(image):
grayscale = cv.CreateImage((image.width,image.height), 8 , 1 ) #创建空的灰度值图片
cv.CvtColor(image,grayscale,cv.CV_BGR2GRAY)
cascade = cv.Load( "/usr/share/opencv/haarcascades/haarcascade_frontalface_alt_tree.xml" ) #记载特征值库,此目录下还有好多库可以选用
rect = cv.HaarDetectObjects(grayscale,cascade,cv.CreateMemStorage(), 1.1 , 2 ,cv.CV_HAAR_DO_CANNY_PRUNING,( 20 , 20 ))
result = [] #标记位置
for r in rect:
result.append((r[ 0 ][ 0 ],r[ 0 ][ 1 ],r[ 0 ][ 0 ] + r[ 0 ][ 2 ],r[ 0 ][ 1 ] + r[ 0 ][ 3 ]))
return result
def process(infile):
image = cv.LoadImage(infile)
if image:
faces = detect_object(image)
im = Image. open (infile)
path = os.path.abspath(infile)
save_path = os.path.splitext(path)[ 0 ] + "_face"
try :
os.mkdir(save_path)
except :
pass
if faces:
draw = ImageDraw.Draw(im)
count = 0
for f in faces:
count + = 1
draw.rectangle(f,outline = ( 255 , 0 , 0 ))
a = im.crop(f)
file_name = os.path.join(save_path, str (count) + ".jpg" )
a.save(file_name)
drow_save_path = os.path.join(save_path, "out.jpg" )
im.save(drow_save_path, "JPEG" ,quality = 80 )
else :
print "Error: cannot detect faces on %s" % infile
if __name__ = = "__main__" :
process( "test3.jpg" )
|
3.效果对比
4.参考资料
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://blog.csdn.net/u013542440/article/details/51039608