OpenCV3,Python3如何训练FisherFaceRecognizer数据集?

2024-09-29 23:20:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用opencv3和python3来训练人脸识别。我可以训练LBPHFace和EigenFace,没有错误,但是当训练FisherFace时会显示错误。在

这是我的密码。在

import os
import cv2
import numpy as np
from PIL import Image

LBPHFace=cv2.face.LBPHFaceRecognizer_create()
EigenFace=cv2.face.EigenFaceRecognizer_create()
FisherFace=cv2.face.FisherFaceRecognizer_create()
path='dataset'

def getImagesWithID(path):
    imagePaths=[os.path.join(path,f) for f in os.listdir(path)]
    #print imagePaths

    faces=[]
    IDs=[]
    for imagePath in imagePaths:
        faceImg=Image.open(imagePath).convert('L')
        faceNp=np.array(faceImg,'uint8')
        ID=int(os.path.split(imagePath)[-1].split('.')[1])
        faces.append(faceNp)
        IDs.append(ID)
        cv2.imshow("training" , faceNp)
        cv2.waitKey(10)
    return np.array(IDs), faces

Ids,faces=getImagesWithID(path)
LBPHFace.train(faces, Ids)    
LBPHFace.write('recognizer/LBPHData.xml')
EigenFace.train(faces, Ids)
EigenFace.write('recognizer/EigenData.xml')

FisherFace.train(faces, Ids)
FisherFace.write('recognizer/FisherData.xml')
cv2.destroyAllWindows()

它显示出这样的错误。在

^{pr2}$

如何训练FisherFaceRecognizer数据集?在


Tags: pathimportidsos错误createnpcv2
1条回答
网友
1楼 · 发布于 2024-09-29 23:20:41

我的代码很好用。在

# face_trainer.py
import cv2, numpy, os
fn_haar = 'haarcascade_frontalface_default.xml'
fn_dir = 'database'

# Part 1: Create fisherRecognizer
print('Training...')
# Create a list of images and a list of corresponding names
(images, labels, names, id) = ([], [], {}, 0)
for (subdirs, dirs, files) in os.walk(fn_dir):
    for subdir in dirs:
        names[id] = subdir
        subjectpath = os.path.join(fn_dir, subdir)
        for filename in os.listdir(subjectpath):
            path = subjectpath + '/' + filename
        images.append(cv2.imread(path, 0))
            #labels.append(int(id))
        labels.append(subdir)
        id += 1
(im_width, im_height) = (112, 92)

# Create a Numpy array from the two lists above
(images, labels) = [numpy.array(lis) for lis in [images, labels]]

# OpenCV trains a model from the images

model = cv2.face.FisherFaceRecognizer_create()
model.train(images, labels)
model.write('trainer/trainer.yml')

相关问题 更多 >

    热门问题