1

I try to use python face detection software. But when I launch it i recive this error:

OpenCV Error: Unspecified error (The node does not represent a user object (unknown type?)) in cvRead, file /build/opencv-FWWjHr/opencv-2.4.9.1+dfsg/modules/core/src/persistence.cpp, line 4991
Traceback (most recent call last):
  File "riconoscimentofacciale.py", line 57, in <module>
    faceCascade = cv.Load("haarcascade_frontalface_default.xml")
cv2.error: The node does not represent a user object (unknown type?)

the source code is this:

#!/usr/bin/python

import cv
import cv2
import time
import Image

def DetectFace(image, faceCascade):

    min_size = (20,20)
    image_scale = 2
    haar_scale = 1.1
    min_neighbors = 3
    haar_flags = 0

    # Allocate the temporary images
    grayscale = cv.CreateImage((image.width, image.height), 8, 1)
    smallImage = cv.CreateImage(
            (
                cv.Round(image.width / image_scale),
                cv.Round(image.height / image_scale)
            ), 8 ,1)

    # Convert color input image to grayscale
    cv.CvtColor(image, grayscale, cv.CV_BGR2GRAY)

    # Scale input image for faster processing
    cv.Resize(grayscale, smallImage, cv.CV_INTER_LINEAR)

    # Equalize the histogram
    cv.EqualizeHist(smallImage, smallImage)

    # Detect the faces
    faces = cv.HaarDetectObjects(
            smallImage, faceCascade, cv.CreateMemStorage(0),
            haar_scale, min_neighbors, haar_flags, min_size
        )

    # If faces are found
    if faces:
        for ((x, y, w, h), n) in faces:
            # the input to cv.HaarDetectObjects was resized, so scale the
            # bounding box of each face and convert it to two CvPoints
            pt1 = (int(x * image_scale), int(y * image_scale))
            pt2 = (int((x + w) * image_scale), int((y + h) * image_scale))
            cv.Rectangle(image, pt1, pt2, cv.RGB(255, 0, 0), 5, 8, 0)

    return image

#----------
# M A I N
#----------

capture = cv.CaptureFromCAM(0)
#capture = cv.CaptureFromFile("test.avi")

faceCascade = cv.Load("haarcascade_frontalface_default.xml")
#faceCascade = cv.Load("haarcascades/haarcascade_frontalface_alt2.xml")
#faceCascade = cv.Load("haarcascades/haarcascade_frontalface_alt.xml")
#faceCascade = cv.Load("haarcascades/haarcascade_frontalface_alt_tree.xml")

while (cv.WaitKey(15)==-1):
    img = cv.QueryFrame(capture)
    image = DetectFace(img, faceCascade)
    cv.ShowImage("face detection test", image)

cv.ReleaseCapture(capture)

I have set-up all right, I followed guide

I download all, install all, create and put the right file/drectory. But still face the error.

2
  • please use the cv2 api, not the deprecated cv one (which is gone in opencv3) also see sample Commented Nov 13, 2015 at 14:20
  • 1
    For Face Detection i.e. If its Obama's face or Trumps in real time check out the source code of this GitHub Repo github.com/UBISOFT-1/Project_Exodus.git Commented May 25, 2021 at 18:47

1 Answer 1

5

One of the most common error new developer faces here is old code which refers to old xml file.

Download this haarcascade_frontalface_alt.xml xml file and replace

faceCascade = cv.Load("haarcascade_frontalface_default.xml")

with

faceCascade = cv.Load("Complete_path_of_THiS_NEW_File")

if you downlaoded the file in downloadfolder then

faceCascade = cv.Load("/home/webadmin/Downloads/haarcascade_frontalface_default.xml")

Hope this helps

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks! That solved the problem! I followed your step and now is all working

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.