Я разрабатываю программы, которые собирают изображения человека с помощью цикла, чтобы обучить их распознаванию лиц в python, но он просто зависает и не движется дальше после нескольких снимков, я даже попытался добавить задержка между циклами с использованием time.sleep (0.5), но это не сработало. Простое распознавание лиц работает без проблем, но сбор данных работает. Вот мой код.
import time
import cv2
Id=input("Enter Your ID: ")
name=input("Enter Your name: ")
cam = cv2.VideoCapture(0)
harcascadePath = "haarcascade_frontalface_default.xml"
detector=cv2.CascadeClassifier(harcascadePath)
sampleNum=0
while(True):
time.sleep(1)
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)
sampleNum=sampleNum+1
cv2.imwrite(name +"."+str(Id) +'.'+ str(sampleNum) + ".jpg", gray[y:y+h,x:x+w])
cv2.imshow('frame',img)
if cv2.waitKey(100) & 0xFF == ord('q'):
break
elif sampleNum>30:
break
cam.release()
cv2.destroyAllWindows()
- Я добавил задержку в начале каждого цикла, чтобы она работала лучше, но это не помогло.
- Мне нужно взять 30 образцов в базе данных, соответствующих каждому образцу.
- клавиша 'q' предназначена для прекращения выполнения, как видно из кода выше.