Attribut d'erreur lors de l'utilisation d'opencv pour la reconnaissance du visage
J'apprends à utiliser openCV par l'écriture d'un simple programme de reconnaissance de visage que j'ai trouvé sur youtube. J'ai installé la version d'opencv 2 ainsi que numpy 1.8.0. Je suis à l'aide de python2.7.
Je copyed ce code exactement comment cela a été fait dans la vidéo et l'article les liens ci-dessous, mais je continue à recevoir des erreurs. AttributeError: 'module' objet n'a pas d'attribut 'cv' Ce que je fais mal?
Voici le code que j'utilise.
import cv2
import sys
# Get user supplied values
imagePath = sys.argv[1]
cascPath = sys.argv[2]
# Create the haar cascade
faceCascade = cv2.CascadeClassifier(cascPath)
# Read the image
image = cv2.imread(imagePath)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# Detect faces in the image
faces = (faceCascade.detectMultiScale(
gray,
scaleFactor=1.1,
minNeighbors=5,
minSize=(30, 30),
flags = cv2.cv.CV_HAAR_SCALE_IMAGE)
)
print "Found {0} faces!".format(len(faces))
# Draw a rectangle around the faces
for (x, y, w, h) in faces:
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.imshow("Faces found", image)
cv2.waitKey(0)
https://www.youtube.com/watch?v=IiMIKKOfjqE
https://realpython.com/blog/python/face-recognition-with-python/
Avec le message d'erreur que vous obtenez, il semblerait que vous êtes en utilisant OpenCV 3.x, pas OpenCV 2.x. Dans un interpréteur python, émettez la commande
cv2.__version__
à vérifier.OriginalL'auteur RatstabOfficial | 2016-03-27
Vous devez vous connecter pour publier un commentaire.
La dernière openCV ne permet plus de l'importation de l'héritage
cv
module. En outre, la convention de nommage des constantes ne fait généralement à l'écart avec les leaders de la "CV_..." et plusieurs/beaucoup de noms ont été quelque peu modifié. Je pense que vous êtes en cours d'exécution dans les deux problèmes.Plus précisément, l'erreur que vous signalez est en ce qui concerne cette expression dans votre code:
cv2.cv.CV_HAAR_SCALE_IMAGE
. Cette expression est d'essayer de trouver la constante nomméeCV_HAAR_SCALE_IMAGE
dans lecv
sous-module de lacv2
package que vous avez importées. Mais hélas, il n'y a pas de cv2.cv de plus.Dans openCV 3, je crois que cette constante est maintenant référencé comme suit:
cv2.CASCADE_SCALE_IMAGE
On peut également trouver des ce lien utile. Il est à l'facedetect.py exemple de script trouvé dans les OpenCV code source. Vous pouvez voir l'utilisation du nouveau nom de constante dans cet exemple, et vous pouvez également consulter pour d'autres changements à partir de sources plus anciennes/tutoriels.
OriginalL'auteur svohara
Voici la mise à jour du code qui fonctionne en jupyter portable avec OpenCV3:
Désolé, je suis d'erreur comme suit: OpenCV(3.4.4) C:\projects\opencv-python\opencv\modules\objdetect\src\cascadedetect.cpp:1698: erreur: (-215:échec de l'Assertion) !empty() dans la fonction 'cv::CascadeClassifier::detectMultiScale'.
OriginalL'auteur AvkashChauhan