annotate c/InputFrameListModule.cpp @ 400:7ef1071e3cc3

clean up of input classes for list of images and video files
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Mon, 29 Jul 2013 18:06:55 -0400
parents c389fae9689a
children b829ebdc18e6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
400
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
1 #include "InputFrameListModule.h"
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
2 #include "utils.hpp"
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
3
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
4 #include <fstream>
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
5 #include <ostream>
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
6 #include <iostream>
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
7
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
8 #include "opencv2/core/core.hpp"
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
9 #include "opencv2/highgui/highgui.hpp"
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
10
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
11 InputFrameListModule::InputFrameListModule(const std::string& basePath, const std::string& pictureList)
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
12 : mCurrentIdx(0), mInit(false), mBasePath(basePath+"/") {
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
13 loadFileList(pictureList);
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
14 }
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
15 InputFrameListModule::~InputFrameListModule()
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
16 {
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
17
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
18 }
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
19
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
20
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
21
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
22 bool InputFrameListModule::getNextFrame(cv::Mat& mat)
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
23 {
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
24 bool success = false;
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
25 if(mCurrentIdx < mFileList.size())
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
26 {
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
27 const std::string& fileName = mBasePath+mFileList[mCurrentIdx++];
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
28 mCurrentFrame = cv::imread(fileName);
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
29
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
30 if(!mCurrentFrame.empty())
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
31 success = true;
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
32 mat = mCurrentFrame;
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
33 }
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
34
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
35
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
36 return success;
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
37 }
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
38
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
39 unsigned int InputFrameListModule::getNbFrames()
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
40 {
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
41 return mFileList.size();
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
42 }
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
43
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
44 void InputFrameListModule::loadFileList(const std::string& path)
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
45 {
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
46 std::ifstream inputFile((mBasePath+path).c_str());
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
47 ::openCheck(inputFile, mBasePath+path, "InputFrameListModule::loadFileList");
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
48 std::string str;
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
49 while( !inputFile.eof() )
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
50 {
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
51 std::getline(inputFile, str);
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
52 if (str.empty())
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
53 break;
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
54 if (str.at(0) == '#' )
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
55 continue; /* comment */
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
56 mFileList.push_back(str);
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
57 }
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
58
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
59 if(!mFileList.empty())
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
60 {
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
61 cv::Mat tmpImg = cv::imread(mBasePath+mFileList[0]);
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
62 mSize = cv::Size(tmpImg.cols, tmpImg.rows);
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
63 mInit = true;
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
64 }
7ef1071e3cc3 clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 399
diff changeset
65 }