opencv 学习之简单人脸识别学习

来源:互联网 发布:淘宝双十一 编辑:程序博客网 时间:2024/05/20 19:50

这次学习主要是从http://blog.csdn.net/wangyaninglm/article/details/51731989这篇文章里学到的。

学习 opencv已经快4个月多了,看了很多关于图像处理的文章和书籍,但只是学会一些比较基础的关于图像基础操作,例如找出背景之类简单操作。

这次,挑战稍微实用的人脸识别。步骤较为简单,首先读出图片,然后将其转换为灰度图。加载官方的人脸识别库。

然后调用detectMultiScale(gray, 1.2,3,CV_HAAR_SCALE_IMAGE,Size(30, 30))函数,获取是被出来的人脸序列(实际是关于人脸坐标和大小的2x2矩阵序列);用矩形圈起来。

源代码如下:

#coding=utf-8import numpy as npimport cv2 def faceRecognize(image):# 检测出人脸的官方库加载face_cas=cv2.CascadeClassifier('lbpcascade_frontalface.xml')#读取图片img=cv2.imread(image);#获取图片灰度gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY);# 识别输入图片中的人脸对象.返回对象的矩形尺寸# 函数原型detectMultiScale(gray, 1.2,3,CV_HAAR_SCALE_IMAGE,Size(30, 30))# gray需要识别的图片# 1.03:表示每次图像尺寸减小的比例# 5:表示每一个目标至少要被检测到4次才算是真的目标(因为周围的像素和不同的窗口大小都可以检测到人脸)# CV_HAAR_SCALE_IMAGE表示不是缩放分类器来检测,而是缩放图像,Size(30, 30)为目标的最小最大尺寸# faces:表示检测到的人脸目标序列,将这张图片里面的所有人脸用矩形圈起来faces = face_cas.detectMultiScale(gray, 1.03, 5)for(x,y,w,h)in faces:if w+h>200:img2=cv2.rectangle(img,(x,y),(x+w,y+h),(255,255,255),4);cv2.imwrite("2.jpg",img);if __name__ == "__main__":    faceRecognize("./1.jpg")
原图:



效果图如下:



0 0