有关Fisherface的人脸识别代码网上实现较少,因此,分享一下自己的代码实现
1.从摄像头获取照片
# -*- coding: utf-8 -*-
"""
Created on Wed May 6 11:00:25 2020
@author: Leonardragon
"""
import cv2
# 调用笔记本内置摄像头,所以参数为0,如果有其他的摄像头可以调整参数为1,2
cap = cv2.VideoCapture(0)
face_detector = cv2.CascadeClassifier('F:\\Useful App\opencv-2.4.9\opencv\sources\data\haarcascades\haarcascade_frontalface_default.xml')
face_id = input('\n enter user id:')
print('\n Initializing face capture. Look at the camera and wait ...')
count = 0
while True:
# 从摄像头读取图片
sucess, img = cap.read()
# 转为灰度图片
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 检测人脸
faces = face_detector.detectMultiScale( gray, 1.3 , 5 )
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0))
count += 1
h = cv2.resize(img[y:y+h,x:x+w],(150,150))
# 保存图像
cv2.imwrite("C:\\Users\\Administrator\\Desktop\\Facedata\\User." + str(face_id) + '.' + str(count) + '.jpg', h)
cv2.imshow('image', img)
# 保持画面的持续。
k = cv2.waitKey(1)
if k == 27: # 通过esc键退出摄像
break
elif count >= 50: # 得到30个样本后退出摄像
break
# 关闭摄像头
cap.release()
cv2.destroyAllWindows()
2.图像训练
# -*- coding: utf-8 -*-
"""
Created on Mon May 4 17:22:46 2020
@author: