0

Heey, I'm trying to sort out the function of Optical Flow of openCV, but for some reason I'm getting an exception in visual studio:

Unhandled exception at 0x772615de in Optical_flow.exe: Microsoft C++ exception: cv::Exception at memory location 0x0036f334..

With breakpoints I found out that the error lies within the cvCalcOpticalFlowHS function.

I'm using openCV 2.1

#include <cv.h>
#include <highgui.h>
using namespace cv;

int init() {
  return 0;
}

int main(int argc, char **args) {
  CvCapture* capture = cvCaptureFromFile("Video/Wildlife.wmv");
  double fps = cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);

  CvSize size;
  size.width = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH);
  size.height = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT);

  CvVideoWriter* writer = cvCreateVideoWriter("result.avi", 0, fps,size, 1);

  IplImage* curFrame = cvQueryFrame(capture);

  Mat u = Mat(size, CV_32FC2);
  Mat v = Mat(size, CV_32FC2);

  CvTermCriteria IterCriteria;
  IterCriteria.type = CV_TERMCRIT_ITER | CV_TERMCRIT_EPS;
  IterCriteria.max_iter = 500;
  IterCriteria.epsilon = 0.01;

  while(1) {
    IplImage* nextFrame = cvQueryFrame(capture);

    if(!nextFrame) break;

    u = Mat::zeros(size, CV_32FC2);
    v = Mat::zeros(size, CV_32FC2);

    /* Do optical flow computation */
    cvCalcOpticalFlowHS(&curFrame, &nextFrame, 0, &u, &v, 0.01, IterCriteria);

    cvWriteFrame(writer, curFrame);

    curFrame = nextFrame;
  }

  cvReleaseVideoWriter(&writer);
  cvReleaseCapture(&capture);

  return 0;
}

Anyone has seen this problem before or sees the mistake I made?

Best Regards

Remco

4

1 に答える 1