1

I think I'm confusing with pointers...

Vision vis;
    IplImage* imgB0=cvCreateImage(img_sz, IPL_DEPTH_32F, 1);
    IplImage* imgB1=cvCreateImage(img_sz, IPL_DEPTH_32F, 1);
    //Get next frame
    vis->getFrame();
    imgB0=vis->image;
    usleep(3);
    vis->getFrame();
    imgB1=vis->image;
    cvAddWeighted(imgB0, 1./(float)2., imgB1,1./(float)2.,0,imgB1);
    cvReleaseImage(&imgB0); //<-SIGABRT
    ...

Vision.h:

 class Vision
    {
    public:
        IplImage* image;
...

Vision.cpp:

void Vision::getFrame()
    {
        image = cvQueryFrame(capture);
    }

Any ideas? Thanks!

EnneKappa
  • 231
  • 1
  • 4
  • 13
  • 2
    `Vision vis;` . `vis` is a stack allocated object and `.` operator needs to be used to access it's members. I amn't sure how you are using `->` operator on it to access it's members and getting a run time error. Am I missing something ? – Mahesh Jul 12 '11 at 14:38
  • 1
    Did class vision has overloaded operator->() ? – ovk Jul 12 '11 at 14:40
  • Vision::Vision() { image = 0; capture = cvCreateCameraCapture(1); – EnneKappa Jul 12 '11 at 15:08

1 Answers1

3

FRom HighGUI Reference Manual:

The returned image should not be released or modified by user.

You're also leaking the two cvImages you create.

user786653
  • 29,780
  • 4
  • 43
  • 53