Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

OpenCV start camera and draw a detect and draw rectangle Null pointer

0 down vote favorite I want to start my Webcam and draw a Rectangle with face detection. The compiler of Code::Blocks says no error while compiling. If i want to "Run" the Code the webcam started and in a few second after stoped it and i get this Error in Terminal:

http://imageshack.us/photo/my-images/835/20130423173054486x346sc.png/

So i have the following code:

include "/usr/local/include/opencv/cv.h"

include "/usr/local/include/opencv/highgui.h"

include <iostream>

include <cstdio>

using namespace std; using namespace cv;

CvRect *r;

const string haarcascade_face = "/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml"; const string haarcascade_eye = "/usr/local/share/OpenCV/haarcascades/haarcascade_eye_tree_eyeglasses.xml";

////String window_name = "Capture - Face detection";

CvHaarClassifierCascade* cascade; CvMemStorage* storage;

void detectAndDisplay( IplImage* img);

int main() { CascadeClassifier cascade_face, cascade_eye; char c;

cascade = (CvHaarClassifierCascade*)cvLoad("/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml");
CvCapture *capture = 0;



IplImage *frame;


if(!cascade_face.load(haarcascade_face))
{
    cout << "[ERROR]: Could not load classifier cascade Face" <<endl;
    return -1;
}

if(!cascade_eye.load(haarcascade_eye))
{
    cout << "[ERROR]: Could not load classifier cascade Eye" <<endl;
    return -1;
}

capture = cvCaptureFromCAM(0); // select camera
if(capture == NULL)
{
    cout << "[ERROR] No camera found!" << endl;
    return -1;
}


// loop forever till ESC
for(;;)
{
    // capture a frame from the camera
    frame = cvQueryFrame(capture);

    // display it
    if(!frame) break;


        detectAndDisplay(frame);


    // test for ESC
    c = cvWaitKey(33);
    if(c == 27 /* ESC */)
       break;
}

return 0;

}

void detectAndDisplay(IplImage* img) {

int i;

CvSeq* faces = cvHaarDetectObjects(img, cascade, storage, 1.1, 3, CV_HAAR_DO_CANNY_PRUNING, cvSize (100, 100));


for(i = 0; i<(faces ? faces->total:0); i++)
{

     r=(CvRect*)cvGetSeqElem(faces,i);
     cvRectangle(img,
                 cvPoint(r->x, r->y),
                 cvPoint(r->x + r->width, r->y + r->height),
                 CV_RGB(255,0,0), 1, 8, 0);
                 }

cvShowImage("Capture - Face Detection", img); }

I dont know what is the Problem :S

thank you for helping to me!!!

OpenCV How to start camera in OpenCV and draw a detect and draw rectangle Null pointeron a detection? Nullpointer exception.

0 down vote favorite I want to start my Webcam and draw a Rectangle with based on the regions returned by face detection. The compiler of Code::Blocks says no error while compiling. If i want to "Run" the Code the webcam started and in a few second after stoped it and i get this Error in Terminal:

http://imageshack.us/photo/my-images/835/20130423173054486x346sc.png/

So i have the following code:

include "/usr/local/include/opencv/cv.h"

include "/usr/local/include/opencv/highgui.h"

include <iostream>

include <cstdio>

#include "/usr/local/include/opencv/cv.h"
#include "/usr/local/include/opencv/highgui.h"

#include <iostream>
#include <cstdio>

using namespace std;
using namespace cv;

cv; CvRect *r;

*r; const string haarcascade_face = "/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml"; const string haarcascade_eye = "/usr/local/share/OpenCV/haarcascades/haarcascade_eye_tree_eyeglasses.xml";

"/usr/local/share/OpenCV/haarcascades/haarcascade_eye_tree_eyeglasses.xml"; ////String window_name = "Capture - Face detection";

detection"; CvHaarClassifierCascade* cascade; CvMemStorage* storage;

storage; void detectAndDisplay( IplImage* img);

img); int main() { CascadeClassifier cascade_face, cascade_eye; char c;

c;

    cascade = (CvHaarClassifierCascade*)cvLoad("/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml");
 CvCapture *capture = 0;



 IplImage *frame;


 if(!cascade_face.load(haarcascade_face))
 {
     cout << "[ERROR]: Could not load classifier cascade Face" <<endl;
     return -1;
 }

 if(!cascade_eye.load(haarcascade_eye))
 {
     cout << "[ERROR]: Could not load classifier cascade Eye" <<endl;
     return -1;
 }

 capture = cvCaptureFromCAM(0); // select camera
 if(capture == NULL)
 {
     cout << "[ERROR] No camera found!" << endl;
     return -1;
 }


 // loop forever till ESC
 for(;;)
 {
     // capture a frame from the camera
     frame = cvQueryFrame(capture);

     // display it
     if(!frame) break;


         detectAndDisplay(frame);


     // test for ESC
     c = cvWaitKey(33);
     if(c == 27 /* ESC */)
        break;
 }

 return 0;

}

} void detectAndDisplay(IplImage* img) {

{

    int i;

 CvSeq* faces = cvHaarDetectObjects(img, cascade, storage, 1.1, 3, CV_HAAR_DO_CANNY_PRUNING, cvSize (100, 100));


 for(i = 0; i<(faces ? faces->total:0); i++)
 {

      r=(CvRect*)cvGetSeqElem(faces,i);
      cvRectangle(img,
                  cvPoint(r->x, r->y),
                  cvPoint(r->x + r->width, r->y + r->height),
                  CV_RGB(255,0,0), 1, 8, 0);
                  }

cvShowImage("Capture - Face Detection", img); }

}

I dont know what is the Problem :Sproblem is, can someone help me solve this problem?

thank Thank you for helping to me!!!