J'essaye de créer une détection de visage et d'oeil en utilisant la bibliothèque d'OpenCV. C'est le code avec lequel je travaillais. Il fonctionne en douceur sans erreur, mais le seul problème ne montrant aucun résultat aucun visage et les yeux se trouvent avec ce codePython - Impossible de détecter le visage et les yeux?
import cv2
import sys
import numpy as np
import os
# Get user supplied values
imagePath = sys.argv[1]
# Create the haar cascade
faceCascade = cv2.CascadeClassifier('C:\Users\Karthik\Downloads\Programs\opencv\sources\data\haarcascades\haarcascad_frontalface_default.xml')
eyeCascade= cv2.CascadeClassifier('C:\Users\Karthik\Downloads\Programs\opencv\sources\data\haarcascades\haarcascade_eye.xml')
# 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.2,
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), (255, 0, 0), 2)
roi_gray = gray[y:y+h, x:x+w]
roi_color = image[y:y+h, x:x+w]
eyes = eyeCascade.detectMultiscale(roi_gray)
for (ex,ey,ew,eh) in eyes:
cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0, 255, 0), 2)
cv2.imshow("Faces found", image)
print image.shape
cv2.waitKey(0)
Merci beaucoup son fonctionnement parfaitement bien pour moi quand je cours ce code à travers cmd son affichage des résultats, mais quand je lance le programme par IDLE son montrant une erreur de [Traceback (dernier appel dernier): Fichier "D: \ Acads \ 7.1 Sem \ BTP \ FaceDetect-maître \ 3.py ", ligne 19, en gray = cv2.cvtColor (image, cv2.COLOR_BGR2GRAY) erreur: .. \ .. \ .. \ .. \ opencv \ modules \ imgproc \ src \ color.cpp: 3739: erreur: (-215) scn == 3 || scn == 4 dans la fonction cv :: cvtColor] après cette erreur j'ai enlevé [gray = cv2.cvtColor (image, cv2.COLOR_BGR2GRAY)] maintenant son fonctionnement sans erreurs pouvez-vous m'aider avec cela aussi –
karthik
Si vous avez maintenant un drapeau 0 dans votre 'cv2.imread (fichier, 0)' vous allez déjà lire l'image d'entrée en niveaux de gris pour que votre image ait seulement 1 canal (scn). C'est pourquoi cvtColor dit "Non, je ne peux pas convertir une image BGR 3 canaux en 1 canal gris car c'est déjà 1 canal et j'ai besoin de' scn == 3 ou scn == 4' ". Donc, retirez le 0 de imread si vous voulez l'image couleur et grayscaled dans votre code. – Fabian
Pour de futures erreurs comme ceci, utilisez 'print (image.shape)' qui vous donnera (hauteur, largeur, canaux) de votre image. Si elle ne renvoie qu'un tuple avec (hauteur, largeur) que votre image est grayscaled. – Fabian