Mercurial Hosting > traffic-intelligence
diff c/feature-based-tracking.cpp @ 138:c1b260b48d2a
corrected initialization bugs and feature shortening before saving
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Fri, 19 Aug 2011 12:15:23 -0400 |
parents | 445e773c9be3 |
children | 47329bd16cc0 |
line wrap: on
line diff
--- a/c/feature-based-tracking.cpp Fri Aug 19 01:35:45 2011 -0400 +++ b/c/feature-based-tracking.cpp Fri Aug 19 12:15:23 2011 -0400 @@ -110,17 +110,27 @@ // } capture.open(params.videoFilename); - if (!capture.isOpened()) - { - //help(argv); - cout << "capture device " << argv[1] << " failed to open!" << endl; - return 1; - } + if(capture.isOpened()) { + videoSize = Size(capture.get(CV_CAP_PROP_FRAME_WIDTH), capture.get(CV_CAP_PROP_FRAME_HEIGHT)); + cout << "Video " << argv[1] << + ": width=" << videoSize.width << + ", height=" << videoSize.height << + ", nframes=" << capture.get(CV_CAP_PROP_FRAME_COUNT) << endl; + } else { + cout << "Video filename " << params.videoFilename << " could not be opened. Exiting." << endl; + exit(0); + } + // if (!capture.isOpened()) + // { + // //help(argv); + // cout << "capture device " << argv[1] << " failed to open!" << endl; + // return 1; + // } // database TrajectoryDBAccess<Point2f>* trajectoryDB = new TrajectoryDBAccessList<Point2f>(); //TrajectoryDBAccess<Point2f>* trajectoryDB = new TrajectoryDBAccessBlob<Point2f>(); - trajectoryDB->connect("test.sqlite"); + trajectoryDB->connect(params.databaseFilename.c_str()); trajectoryDB->createTable(); vector<KeyPoint> prevKpts, currKpts; @@ -158,10 +168,11 @@ if (status[iter->pointNum]) { iter->feature->addPoint(frameNum, currPts[iter->pointNum]); - trackedPts.push_back(currPts[iter->pointNum]); - iter->pointNum = trackedPts.size()-1; - deleteFeature |= !iter->feature->largeDisplacement(params.nDisplacements, minTotalFeatureDisplacement); + bool smallDisplacement = iter->feature->smallDisplacement(params.nDisplacements, minTotalFeatureDisplacement); + if (smallDisplacement) + iter->feature->shorten(); + deleteFeature |= smallDisplacement; // motionSmooth() } @@ -172,8 +183,11 @@ iter->feature->write(*trajectoryDB); } iter = featurePointMatches.erase(iter); - } else + } else { + trackedPts.push_back(currPts[iter->pointNum]); + iter->pointNum = trackedPts.size()-1; iter++; + } } currPts = trackedPts; assert(currPts.size() == featurePointMatches.size());