Я запускаю OpenCV для распознавания лиц на Raspberry Pi с веб-камерой, но он перестал работать без каких-либо изменений в моем коде

#python-2.7 #opencv

#python-2.7 #opencv

Вопрос:

Я пытаюсь запустить службу распознавания лиц на моем Raspberry Pi, но она внезапно перестала распознавать лица

Я использую python-opencv для этого, и в прошлый раз, когда я тестировал его, все работало нормально. Приведенный ниже код предназначен для обучения системы новым лицам `

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

recognizer = cv2.createLBPHFaceRecognizer()
detector= cv2.CascadeClassifier("haarcascade_frontalface_default.xml");
cam = cv2.VideoCapture(0)
con = sqlite3.connect('Users.db')
cur = con.cursor()


Id=raw_input('Enter your id: ')
name=raw_input('Enter your name: ')
sampleNum=0
while True:
    ret, img = cam.read()
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    faces = 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),2)

        #incrementing sample number 
        sampleNum=sampleNum 1
        #saving the captured face in the dataset folder
        cv2.imwrite("dataSet/User." Id  '.'  str(sampleNum)   ".jpg", gray[y:y h,x:x w])

        cv2.imshow('frame',img)
    #wait for 100 miliseconds 
    if cv2.waitKey(100) amp; 0xFF == ord('q'):
        break
    # break if the sample number is more than 20
    elif sampleNum>30:
        break

cam.release()
cv2.destroyAllWindows()



def getImagesAndLabels(path):
    #get the path of all the files in the folder
    imagePaths=[os.path.join(path,f) for f in os.listdir(path)] 
    #create empth face list
    faceSamples=[]
    #create empty ID list
    Ids=[]
    #now looping through all the image paths and loading the Ids and the images
    for imagePath in imagePaths:
        #loading the image and converting it to gray scale
        pilImage=Image.open(imagePath).convert('L')
        #Now we are converting the PIL image into numpy array
        imageNp=np.array(pilImage,'uint8')


        #getting the Id from the image
        Id=int(os.path.split(imagePath)[-1].split(".")[1])
        # extract the face from the training image sample
        faces=detector.detectMultiScale(imageNp)
        #If a face is there then append that in the list as well as Id of it
        for (x,y,w,h) in faces:
            faceSamples.append(imageNp[y:y h,x:x w])
            Ids.append(Id)
    return faceSamples,Ids

os.system("sudo rm trainer/trainer.yml")
faces,Ids = getImagesAndLabels('dataSet')
recognizer.train(faces, np.array(Ids))
recognizer.save('trainer/trainer.yml')
  

`
Обычно он открывает окно и последовательно показывает 30 фотографий лица пользователя, но теперь ничего не отображается после запроса имени. Я запускал другие приложения OpenCV, и они могут находить лица на статических изображениях.

Ответ №1:

Мне пришлось заменить haar_cascade_frontalface.xml файл