Python3.6+OpenCV3.0人脸识别代码

匿名 (未验证) 提交于 2019-12-02 22:54:36

0、建立项目文件夹

G:\Python_work\face_detect

在“face_detect”文件夹中建立“generate.py”、“check_image.py”、“face_recognition.py”文件

以及“data”、“cascades”文件夹;“cascades”文件夹中包含各类人脸检测的XML文件,如:“haarcascade_eye.xml”

“haarcascade_frontalface_default.xml”文件等;在“data”文件夹内建立“ChenXiaoHan”“WuLiJing”“YuTao”子文件夹(可依据人名自行设置);

1、生成人脸识别数据(代码)

import cv2
import os

path=r'G:\Python_work\face_detect\cascades'

def generate():
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
face_cascade.load(path+'\haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
eye_cascade.load(path+'\haarcascade_eye.xml')
camera = cv2.VideoCapture(0)
count = 0
while(True):
ret,frame = camera.read()
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray,1.3,5)
for (x,y,w,h) in faces:
img = cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),2)
f=cv2.resize(gray[y:y+h,x:x+w],(200,200))
cv2.imwrite(r'.\data\YuTao\%s.pgm' % str(count),f)
count += 1

cv2.imshow("camera",frame)
if cv2.waitKey(1) & 0xff == ord("q"):
break
camera.release()
cv2.destroyAllWindows()

if __name__ == "__main__":

generate()


2、查看训练数据集(代码)

import cv2

img = cv2.imread(r"G:\Python_work\face_detect\data\YuTao\0.pgm",
cv2.IMREAD_GRAYSCALE)

print(img)

cv2.imshow('img',img)
cv2.waitKey()

cv2.destroyAllWindows()

3、人脸识别(代码)

import cv2
import os
import sys
import numpy as np

def read_images(path,sz=None):
c=0
X,y = [],[]
for dirname,dirnames,filenames in os.walk(path):
for subdirname in dirnames:

for filename in os.listdir(subject_path):
try:
if not filename.endswith('.pgm'):
continue
filepath = os.path.join(subject_path,filename)

im = cv2.imread(os.path.join(subject_path,filename),
cv2.IMREAD_GRAYSCALE)

if(sz is not None):
im = cv2.resize(im,(200,200))

X.append(np.asarray(im,dtype=np.uint8))
y.append(c)

except (IOError,(errno,strerror)):
print("I/O error({0}):{1}".format(errno,strerror))

except:
print("Unexcepted error:",sys.exc_info()[0])
raise
c=c+1

return[X,y]

def face_rec(img_path):


























if __name__ == "__main__":

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!