TensorFlow实现人脸识别(2)------利用opencv在视频中识别人脸并且保存

上一节博文介绍了利用opencv来进行视频的读取,本节中将在读取视频的基础上,利用opencv自带的人脸识别分类器haarcascade_frontalface_alt2.xml将人脸识别出来,并且将每一张人脸保存为图片,用于训练。

一、获取视频数据
获取视频时同上一节,具体参考:http://blog.csdn.net/yunge812/article/details/79444172

二、读取分类器函数

classifier=cv2.CascadeClassifier('/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt2.xml')

这个分类器是opencv自带的人脸检测分类器

三、加载分类器

#图像灰度化
        grey=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
        #加载分类器 opencv自带
        faceRects = classifier.detectMultiScale(grey, scaleFactor=1.2, 
                    minNeighbors=3, minSize=(32, 32))

faceRects 中存储的就是人脸的x,y,w,h

四、将得到的人脸存储为图片

#这里为每个捕捉到的图片进行命名,每个图片按数字递增命名。
image_name='traindata/%d.jpg' % num
image=frame[y-5:y+h+5,x:x+w]#将当前帧含人脸部分保存为图片
cv2.imwrite(image_name,image)

num+=1
cv2.rectangle(frame,(x,y),(x+w,y+h),color,2) #画出矩形框
font = cv2.FONT_HERSHEY_SIMPLEX              #获取内置字体
cv2.putText(frame,('%d'%num),(x+30,y+30),font,1,(255,0,255),4) 
#对人脸坐标位置,添加一个(x+30,y+30)的矩形框用于显示当前捕捉到了多少人脸图片

五、结果
识别出来的人脸
这里写图片描述

保存的人脸照片
这里写图片描述
只保留了人脸的照片

最后我们分别保存训练照片和测试照片,训练照片为正样本,即我们识别的人的照片,测试样本为负样本,是随机人物的照片,我们最终的目的是在众多的人脸中识别出来正样本。

源码下载地址 http://download.csdn.net/download/yunge812/10269816

猜你喜欢

转载自blog.csdn.net/yunge812/article/details/79445602