こんにちはすべてのシニアプログラマ!私はeigenfaces画像トレーニングの部分にエラーがあります。Eigenfacesトレーニング画像ピクセルサイズエラー
エラー:OpenCVエラー:サポートされていないフォーマットまたはフォーマットの組み合わせ(Eigenfacesメソッドでは、すべての入力サンプル(トレーニング画像)は同じサイズでなければなりません!cv :: faceの27889ピクセルが必要ですが、27556ピクセル:: Eigenfaces ::列車、ファイルC:¥projects¥opencv-python¥opencv_contrib¥modules¥face¥src¥eigen_faces.cpp、行68
私の写真が同じサイズでないことを意味する。私はカメラから画像をキャプチャするときにcv2.rezise()を試みますが、それでも動作しません。
は、ここに私のキャプチャコードです:
import cv2
cam = cv2.VideoCapture(0)
detector = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
Id = input('enter your id: ')
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)
sampleNum = sampleNum+1
cv2.imwrite("dataSet/user."+Id+'.'+str(sampleNum)+".jpg",cv2.resize
(gray[y:y+h,x:x+w],(70,70)))
cv2.imshow('frame',img)
if cv2.waitKey(100) & 0xFF == ord('q'):#waitKey is for delay in video capture
break
elif sampleNum >= 50:#how many picture capture?
break
cam.release()
cv2.destroyAllWindows()
、ここでトレーニング一部です:
import cv2,os
import numpy as np
recognizer = cv2.face.EigenFaceRecognizer_create()
detector= cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
def getImagesAndLabels(path):
imagePaths=[os.path.join(path,f) for f in os.listdir(path)]
faceSamples=[]
Ids=[]
for imagePath in imagePaths:
pilImage = Image.open(imagePath).convert('L')
imageNp = np.array(pilImage,'uint8')
Id = int(os.path.split(imagePath)[-1].split(".")[1])
faces = detector.detectMultiScale(imageNp)
for (x,y,w,h) in faces:
faceSamples.append(imageNp[y:y+h,x:x+w])
Ids.append(Id)
return faceSamples,Ids
faces,Ids = getImagesAndLabels('dataSet')
recognizer.train(faces, np.array(Ids))
recognizer.write('trainner/trainnerEi.yml')
PS。私はありがとうLBPHFaceRecognizer からこのコードを適応させる!* 3
検出されたサイズ変更された顔画像について、なぜ「getImagesAndLabels」で再度検出しますか? – Silencer
真実は分かりません。私はちょうどYouTubeからLBPHFaceRecognizerのためにこのコードを取得します。シニアを助けてください。 – LotOfQuestion