From 20cdf5d7f6af52af79c66a62f32ac711754aa93b Mon Sep 17 00:00:00 2001 From: Vladimir Date: Sat, 22 Aug 2015 02:29:50 +0900 Subject: [PATCH] Fixed segmentation fault error in TRACK_vot::getNextFrame() --- modules/datasets/samples/track_vot.cpp | 4 ++-- modules/datasets/src/track_vot.cpp | 5 ++++- modules/tracking/samples/multiTracker_dataset.cpp | 8 ++------ modules/tracking/samples/tracker_dataset.cpp | 4 +--- 4 files changed, 9 insertions(+), 12 deletions(-) diff --git a/modules/datasets/samples/track_vot.cpp b/modules/datasets/samples/track_vot.cpp index 67525f21f..4b5937604 100644 --- a/modules/datasets/samples/track_vot.cpp +++ b/modules/datasets/samples/track_vot.cpp @@ -82,8 +82,8 @@ int main(int argc, char *argv[]) for (int i = 0; i < dataset->getDatasetLength(datasetID); i++) { Mat frame; - dataset->getNextFrame(frame); - + if (!dataset->getNextFrame(frame)) + break; //Draw Ground Truth BB vector gtPoints = dataset->getGT(); for (int j = 0; j < (int)(gtPoints.size()-1); j++) diff --git a/modules/datasets/src/track_vot.cpp b/modules/datasets/src/track_vot.cpp index 9f08ff175..f55b0b6c3 100644 --- a/modules/datasets/src/track_vot.cpp +++ b/modules/datasets/src/track_vot.cpp @@ -210,7 +210,10 @@ namespace cv bool TRACK_votImpl::getNextFrame(Mat &frame) { - frame = imread(data[activeDatasetID - 1][frameCounter]->imagePath); + if (frameCounter >= (int)data[activeDatasetID - 1].size()) + return false; + string imgPath = data[activeDatasetID - 1][frameCounter]->imagePath; + frame = imread(imgPath); frameCounter++; return !frame.empty(); } diff --git a/modules/tracking/samples/multiTracker_dataset.cpp b/modules/tracking/samples/multiTracker_dataset.cpp index 9fd2f4bf5..2b3f84d34 100644 --- a/modules/tracking/samples/multiTracker_dataset.cpp +++ b/modules/tracking/samples/multiTracker_dataset.cpp @@ -50,9 +50,7 @@ using namespace std; using namespace cv; using namespace cv::datasets; -#define NUM_TEST_FRAMES 100 -#define TEST_VIDEO_INDEX 7 //TLD Dataset Video Index from 1-10 -//#define RECORD_VIDEO_FLG +#define NUM_TEST_FRAMES 1000 static Mat image; static bool paused; @@ -186,10 +184,8 @@ int main(int argc, char *argv[]) //Time measurment int64 e1 = getTickCount(); if (initialized){ - dataset->getNextFrame(frame); - if (frame.empty()){ + if (!dataset->getNextFrame(frame)) break; - } frame.copyTo(image); } diff --git a/modules/tracking/samples/tracker_dataset.cpp b/modules/tracking/samples/tracker_dataset.cpp index ffae624a8..489469fea 100644 --- a/modules/tracking/samples/tracker_dataset.cpp +++ b/modules/tracking/samples/tracker_dataset.cpp @@ -169,10 +169,8 @@ int main(int argc, char *argv[]) //Time measurment int64 e1 = getTickCount(); if (initialized){ - dataset->getNextFrame(frame); - if (frame.empty()){ + if (!dataset->getNextFrame(frame)) break; - } frame.copyTo(image); }