diff c/feature-based-tracking.cpp @ 278:f21ef87f98f1

resolved issue 2 and problem with negative nframes parameter
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Fri, 14 Dec 2012 01:01:55 -0500
parents 2d34060db2e9
children 68861b52a319
line wrap: on
line diff
--- a/c/feature-based-tracking.cpp	Fri Dec 14 01:01:26 2012 -0500
+++ b/c/feature-based-tracking.cpp	Fri Dec 14 01:01:55 2012 -0500
@@ -125,17 +125,22 @@
 
   int key = '?';
   unsigned int savedFeatureId=0;
-  Mat frame, currentFrameBW, previousFrameBW;
+  Mat frame = Mat::zeros(1, 1, CV_8UC1), currentFrameBW, previousFrameBW;
 
-  unsigned int lastFrameNum = params.frame1+nFrames;
+  unsigned int lastFrameNum = nFrames;
   if (params.nFrames > 0)
-    lastFrameNum = MIN(params.frame1+params.nFrames, nFrames);
+    lastFrameNum = MIN(params.frame1+static_cast<unsigned int>(params.nFrames), nFrames);
   
-  capture.set(CV_CAP_PROP_POS_FRAMES, params.frame1);
+  //capture.set(CV_CAP_PROP_POS_FRAMES, params.frame1);
   for (unsigned int frameNum = params.frame1; (frameNum < lastFrameNum) && !::interruptionKey(key); frameNum++) {
       capture >> frame;
+
+      if (frame.empty() || frame.size() != videoSize)
+	break;
+
       if (frameNum%50 ==0)
 	cout << "frame " << frameNum << endl;
+
       //capture.get(CV_CAP_PROP_POS_FRAMES) << " " << prevPts.size() << endl;
 
       // int emptyFrameNum = 0;