Attribute error while using opencv for face recognition Attribute error while using opencv for face recognition numpy numpy

Attribute error while using opencv for face recognition


The latest openCV no longer allows importing the legacy cv module. Furthermore the naming convention of the constants generally does away with the leading "CV_..." and several/many of the names have been altered somewhat. I think you are running into both problems.

Specifically, the error you are reporting is in regards to this expression in your code: cv2.cv.CV_HAAR_SCALE_IMAGE. This expression is trying to find the named constant CV_HAAR_SCALE_IMAGE within the cv submodule of the cv2 package you imported. But alas, there is no cv2.cv anymore.

In openCV 3, I believe this constant is now referenced as follows: cv2.CASCADE_SCALE_IMAGE

Also, you may find this link useful. It is to the facedetect.py sample script found in the OpenCV source code. You can see the usage of the new constant name in this example, and you may also inspect it for other changes from older sources/tutorials.


This code is working fine for me i'm using the opencv3 lib, please try it

import cv2import sys # Get user supplied valuesimagePath = sys.argv[1]cascPath = sys.argv[2]# Create the haar cascadefaceCascade = cv2.CascadeClassifier(cascPath)# Read the imageimage = cv2.imread(imagePath)gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# Detect faces in the imagefaces = faceCascade.detectMultiScale(    gray,    scaleFactor=1.1,    minNeighbors=5,    minSize=(30, 30),    flags=cv2.CASCADE_SCALE_IMAGE)# Draw a rectangle around the facesfor (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)


Here is the updated code which works into jupyter notebook with OpenCV3:

[]import cv2import matplotlib.pyplot as plt%matplotlib inline []# Get user supplied valuesimagePath = "abba.png"cascPath = "haarcascade_frontalface_default.xml"[]# Create the haar cascadefaceCascade = cv2.CascadeClassifier(cascPath)[]# Create the haar cascadefaceCascade = cv2.CascadeClassifier(cascPath)[]# Read the imageimage = cv2.imread(imagePath)[]plt.imshow(image)plt.show()[]gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)[]# Detect faces in the imagefaces = faceCascade.detectMultiScale(   gray,   scaleFactor=1.1,   minNeighbors=5,   minSize=(30, 30),   flags = cv2.CASCADE_SCALE_IMAGE #flags = cv2.cv.CV_HAAR_SCALE_IMAGE)[]print("Found {0} faces!".format(len(faces)))[]# Draw a rectangle around the facesfor (x, y, w, h) in faces:    cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)[]plt.imshow(image)plt.show()