Mercurial Hosting > traffic-intelligence
comparison 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 |
comparison
equal
deleted
inserted
replaced
399:c389fae9689a | 400:7ef1071e3cc3 |
---|---|
1 #include "InputFrameListModule.h" | 1 #include "InputFrameListModule.h" |
2 #include "utils.hpp" | |
3 | |
2 #include <fstream> | 4 #include <fstream> |
3 #include <ostream> | 5 #include <ostream> |
6 #include <iostream> | |
4 | 7 |
5 #include "opencv2/core/core.hpp" | 8 #include "opencv2/core/core.hpp" |
6 #include "opencv2/highgui/highgui.hpp" | 9 #include "opencv2/highgui/highgui.hpp" |
7 | 10 |
8 InputFrameListModule::InputFrameListModule(const std::string& basePath, const std::string& pictureList) | 11 InputFrameListModule::InputFrameListModule(const std::string& basePath, const std::string& pictureList) |
9 : mInit(false) | 12 : mCurrentIdx(0), mInit(false), mBasePath(basePath+"/") { |
10 , mBasePath(basePath+"/") | 13 loadFileList(pictureList); |
11 , mCurrentIdx(0) | |
12 { | |
13 loadFileList(pictureList); | |
14 } | 14 } |
15 InputFrameListModule::~InputFrameListModule() | 15 InputFrameListModule::~InputFrameListModule() |
16 { | 16 { |
17 | 17 |
18 } | 18 } |
19 | 19 |
20 | 20 |
21 | 21 |
22 bool InputFrameListModule::getNextFrame(cv::Mat& mat) | 22 bool InputFrameListModule::getNextFrame(cv::Mat& mat) |
23 { | 23 { |
24 bool success = false; | 24 bool success = false; |
25 if(mCurrentIdx < mFileList.size()) | 25 if(mCurrentIdx < mFileList.size()) |
26 { | 26 { |
27 const std::string& fileName = mBasePath+mFileList[mCurrentIdx++]; | 27 const std::string& fileName = mBasePath+mFileList[mCurrentIdx++]; |
28 mCurrentFrame = cv::imread(fileName); | 28 mCurrentFrame = cv::imread(fileName); |
29 | 29 |
30 if(!mCurrentFrame.empty()) | 30 if(!mCurrentFrame.empty()) |
31 success = true; | 31 success = true; |
32 mat = mCurrentFrame; | 32 mat = mCurrentFrame; |
33 } | 33 } |
34 | 34 |
35 | 35 |
36 return success; | 36 return success; |
37 } | 37 } |
38 | |
39 | |
40 | |
41 | |
42 | 38 |
43 unsigned int InputFrameListModule::getNbFrames() | 39 unsigned int InputFrameListModule::getNbFrames() |
44 { | 40 { |
45 return mFileList.size(); | 41 return mFileList.size(); |
46 } | 42 } |
47 | 43 |
48 void InputFrameListModule::loadFileList(const std::string& path) | 44 void InputFrameListModule::loadFileList(const std::string& path) |
49 { | 45 { |
50 std::ifstream inputFile(mBasePath+path.c_str()); | 46 std::ifstream inputFile((mBasePath+path).c_str()); |
51 std::string fileContains; | 47 ::openCheck(inputFile, mBasePath+path, "InputFrameListModule::loadFileList"); |
52 if (inputFile.is_open()) | 48 std::string str; |
53 { | 49 while( !inputFile.eof() ) |
54 | 50 { |
55 std::string str; | 51 std::getline(inputFile, str); |
56 while( !inputFile.eof() ) | 52 if (str.empty()) |
57 { | 53 break; |
58 std::getline(inputFile, str); | 54 if (str.at(0) == '#' ) |
59 if (str.empty()) | 55 continue; /* comment */ |
60 break; | 56 mFileList.push_back(str); |
61 if (str.at(0) == '#' ) | 57 } |
62 continue; /* comment */ | |
63 mFileList.push_back(str); | |
64 } | |
65 | 58 |
66 if(!mFileList.empty()) | 59 if(!mFileList.empty()) |
67 { | 60 { |
68 cv::Mat tmpImg = cv::imread(mBasePath+mFileList[0]); | 61 cv::Mat tmpImg = cv::imread(mBasePath+mFileList[0]); |
69 mSize = cv::Size(tmpImg.cols, tmpImg.rows); | 62 mSize = cv::Size(tmpImg.cols, tmpImg.rows); |
70 mInit = true; | 63 mInit = true; |
71 } | 64 } |
72 } | |
73 } | 65 } |