I am trying to detect a face from a webcam using opencv python on ubuntu. I got this online code and tried to run this program, and I get a pointer to a NULL array, I think that it cannot capture video from a webcam, but with the same code (only for capturing the camera). I turned on the camera and he captured the video. Here is my code:
import cv from opencv import highgui HAAR_CASCADE_PATH = "/home/OpenCV-2.3.1/data/haarcascades/haarcascade_frontalface_default.xml" CAMERA_INDEX = 0 def detect_faces(image): faces = [] detected = cv.HaarDetectObjects(image, cascade, storage, 1.2, 2, cv.CV_HAAR_DO_CANNY_PRUNING, (100,100)) if detected: for (x,y,w,h),n in detected: faces.append((x,y,w,h)) return faces if __name__ == "__main__": cv.NamedWindow("Video", cv.CV_WINDOW_AUTOSIZE) capture = cv.CaptureFromCAM(0) storage = cv.CreateMemStorage() cascade = cv.Load(HAAR_CASCADE_PATH) print cascade faces = [] i = 0 c = -1 while (c == -1): image = cv.QueryFrame(capture)
And the error I get is:
Traceback (most recent call last): File "/home/OpenCV-2.3.1/webcam_try.py", line 38, in <module> faces = detect_faces(frame) File "/home/OpenCV-2.3.1/webcam_try.py", line 13, in detect_faces detected = cv.cvHaarDetectObjects(frame, cascade, storage, 1.2, 2, cv.CV_HAAR_DO_CANNY_PRUNING,(100,100)) File "/usr/lib/pymodules/python2.7/opencv/cv.py", line 1626, in cvHaarDetectObjects return _cv.cvHaarDetectObjects(*args) NotImplementedError: Wrong number of arguments for overloaded function 'cvHaarDetectObjects'. Possible C/C++ prototypes are: cvHaarDetectObjects_Shadow(CvArr const *,CvHaarClassifierCascade *,CvMemStorage *,double,int,int,CvSize) cvHaarDetectObjects_Shadow(CvArr const *,CvHaarClassifierCascade *,CvMemStorage *,double,int,int) cvHaarDetectObjects_Shadow(CvArr const *,CvHaarClassifierCascade *,CvMemStorage *,double,int) cvHaarDetectObjects_Shadow(CvArr const *,CvHaarClassifierCascade *,CvMemStorage *,double) cvHaarDetectObjects_Shadow(CvArr const *,CvHaarClassifierCascade *,CvMemStorage *)