From eecbe625ad297a3578680cada6bfe383abe06502 Mon Sep 17 00:00:00 2001 From: Vladimir Date: Sat, 22 Aug 2015 00:14:05 +0900 Subject: [PATCH] Fix #1 --- modules/datasets/src/track_vot.cpp | 311 ++++++++++++++--------------- 1 file changed, 155 insertions(+), 156 deletions(-) diff --git a/modules/datasets/src/track_vot.cpp b/modules/datasets/src/track_vot.cpp index 14f84a2a4..524028248 100644 --- a/modules/datasets/src/track_vot.cpp +++ b/modules/datasets/src/track_vot.cpp @@ -45,186 +45,185 @@ using namespace std; namespace cv { -namespace datasets -{ - -class TRACK_votImpl : public TRACK_vot -{ -public: - //Constructor - TRACK_votImpl() + namespace datasets { - activeDatasetID = 1; - frameCounter = 0; - } - //Destructor - virtual ~TRACK_votImpl() {} + class TRACK_votImpl : public TRACK_vot + { + public: + //Constructor + TRACK_votImpl() + { - //Load Dataset - virtual void load(const string &path); + activeDatasetID = 1; + frameCounter = 0; + } + //Destructor + virtual ~TRACK_votImpl() {} - virtual int getDatasetsNum(); + //Load Dataset + virtual void load(const string &path); - virtual int getDatasetLength(int id); + virtual int getDatasetsNum(); - virtual bool initDataset(int id); + virtual int getDatasetLength(int id); - virtual bool getNextFrame(Mat &frame); + virtual bool initDataset(int id); - virtual vector getGT(); + virtual bool getNextFrame(Mat &frame); -private: - void loadDataset(const string &path); + virtual vector getGT(); - string numberToString(int number); -}; + private: + void loadDataset(const string &path); -void TRACK_votImpl::load(const string &path) -{ - loadDataset(path); -} + string numberToString(int number); + }; -string TRACK_votImpl::numberToString(int number) -{ - string out; - char numberStr[9]; - sprintf(numberStr, "%u", number); - for (unsigned int i=0; i<8-strlen(numberStr); ++i) - { - out += "0"; - } - out += numberStr; - return out; -} - -inline bool fileExists(const std::string& name) -{ - struct stat buffer; - return (stat(name.c_str(), &buffer) == 0); -} + void TRACK_votImpl::load(const string &path) + { + loadDataset(path); + } -void TRACK_votImpl::loadDataset(const string &rootPath) -{ - ifstream namesList(rootPath + "/list.txt"); - //ifstream lengthsList(rootPath + "/lengths.txt"); - vector datasetsLengths; - string datasetName; + string TRACK_votImpl::numberToString(int number) + { + string out; + char numberStr[9]; + sprintf(numberStr, "%u", number); + for (unsigned int i = 0; i < 8 - strlen(numberStr); ++i) + { + out += "0"; + } + out += numberStr; + return out; + } - if (namesList.is_open()) - { - int currDatasetID = 0; + inline bool fileExists(const std::string& name) + { + struct stat buffer; + return (stat(name.c_str(), &buffer) == 0); + } - //All datasets/folders loop - while (getline(namesList, datasetName)) + void TRACK_votImpl::loadDataset(const string &rootPath) { - currDatasetID++; - vector > objects; + ifstream namesList(rootPath + "/list.txt"); + //ifstream lengthsList(rootPath + "/lengths.txt"); + vector datasetsLengths; + string datasetName; - //All frames/images loop - Ptr currDataset(new TRACK_votObj); + if (namesList.is_open()) + { + int currDatasetID = 0; + + //All datasets/folders loop + while (getline(namesList, datasetName)) + { + currDatasetID++; + vector > objects; + + //All frames/images loop + Ptr currDataset(new TRACK_votObj); + + //Open dataset's ground truth file + ifstream gtList(rootPath + "/" + datasetName + "/groundtruth.txt"); + if (!gtList.is_open()) + cout << "Error to open groundtruth.txt!!!"; + + //Make a list of datasets lengths + int currFrameID = 1; + if (currDatasetID == 0) + cout << "VOT 2015 Dataset Initialization...\n"; + + do + { + currFrameID++; + string fullPath = rootPath + "/" + datasetName + "/" + numberToString(currFrameID) + ".jpg"; + if (!fileExists(fullPath)) + break; + + //Make VOT Object + Ptr currObj(new TRACK_votObj); + currObj->imagePath = fullPath; + currObj->id = currFrameID; + + //Get Ground Truth data + double x1 = 0, y1 = 0, + x2 = 0, y2 = 0, + x3 = 0, y3 = 0, + x4 = 0, y4 = 0; + string tmp; + getline(gtList, tmp); + sscanf(tmp.c_str(), "%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf", &x1, &y1, &x2, &y2, &x3, &y3, &x4, &y4); + currObj->gtbb.push_back(Point2d(x1, y1)); + currObj->gtbb.push_back(Point2d(x2, y2)); + currObj->gtbb.push_back(Point2d(x3, y3)); + currObj->gtbb.push_back(Point2d(x4, y4)); + + //Add object to storage + objects.push_back(currObj); + + } while (true); + + datasetsLengths.push_back(currFrameID - 1); + data.push_back(objects); + } + } + else + { + cout << rootPath + "Couldn't find a *list.txt* in VOT 2015 folder!!!"; + } - //Open dataset's ground truth file - ifstream gtList(rootPath + "/" + datasetName + "/groundtruth.txt"); - if (!gtList.is_open()) - cout << "Error to open groundtruth.txt!!!"; + namesList.close(); + return; + } - //Make a list of datasets lengths - int currFrameID = 1; - if (currDatasetID == 0) - cout << "VOT 2015 Dataset Initialization...\n"; + int TRACK_votImpl::getDatasetsNum() + { + return data.size(); + } - do + int TRACK_votImpl::getDatasetLength(int id) + { + if (id > 0 && id <= (int)data.size()) + return data[id - 1].size(); + else { - currFrameID++; - string fullPath = rootPath + "/" + datasetName + "/" + numberToString(currFrameID) + ".jpg"; - if (!fileExists(fullPath)) - break; - - //Make VOT Object - Ptr currObj(new TRACK_votObj); - currObj->imagePath = fullPath; - currObj->id = currFrameID; - - //Get Ground Truth data - double x1 = 0, y1 = 0, - x2 = 0, y2 = 0, - x3 = 0, y3 = 0, - x4 = 0, y4 = 0; - string tmp; - getline(gtList, tmp); - sscanf(tmp.c_str(), "%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf", &x1, &y1, &x2, &y2, &x3, &y3, &x4, &y4); - currObj->gtbb.push_back(Point2d(x1, y1)); - currObj->gtbb.push_back(Point2d(x2, y2)); - currObj->gtbb.push_back(Point2d(x3, y3)); - currObj->gtbb.push_back(Point2d(x4, y4)); - - //Add object to storage - objects.push_back(currObj); - - } while (true); - - datasetsLengths.push_back(currFrameID-1); - data.push_back(objects); + cout << "Dataset ID is out of range...\n " << "Allowed IDs are: 1~" << (int)data.size() << endl; + return -1; + } } - } - else - { - cout << rootPath + "Couldn't find a *list.txt* in VOT 2015 folder!!!"; - } - namesList.close(); - return; -} - -int TRACK_votImpl::getDatasetsNum() -{ - return data.size(); -} - -int TRACK_votImpl::getDatasetLength(int id) -{ - if (id > 0 && id <= (int)data.size()) - return data[id - 1].size(); - else - { - cout << "Dataset ID is out of range...\n " << "Allowed IDs are: 1~" << (int)data.size() << endl; - return -1; - } -} - -bool TRACK_votImpl::initDataset(int id) -{ - if (id > 0 && id <= (int)data.size()) - { - activeDatasetID = id; - return true; - } - else - { - cout << "Dataset ID is out of range...\n " << "Allowed IDs are: 1~" << (int)data.size() << endl; - return false; - } -} - -bool TRACK_votImpl::getNextFrame(Mat &frame) -{ - frame = imread(data[activeDatasetID - 1][frameCounter]->imagePath); - frameCounter++; - return !frame.empty(); -} + bool TRACK_votImpl::initDataset(int id) + { + if (id > 0 && id <= (int)data.size()) + { + activeDatasetID = id; + return true; + } + else + { + cout << "Dataset ID is out of range...\n " << "Allowed IDs are: 1~" << (int)data.size() << endl; + return false; + } + } -Ptr TRACK_vot::create() -{ - return Ptr(new TRACK_votImpl); -} + bool TRACK_votImpl::getNextFrame(Mat &frame) + { + frame = imread(data[activeDatasetID - 1][frameCounter]->imagePath); + frameCounter++; + return !frame.empty(); + } -vector TRACK_votImpl::getGT() -{ - Ptr currObj = data[activeDatasetID - 1][frameCounter - 1]; - return currObj->gtbb; -} + Ptr TRACK_vot::create() + { + return Ptr(new TRACK_votImpl); + } -} -} + vector TRACK_votImpl::getGT() + { + Ptr currObj = data[activeDatasetID - 1][frameCounter - 1]; + return currObj->gtbb; + } + } +} \ No newline at end of file