Mercurial Hosting > traffic-intelligence
annotate c/InputFrameListModule.cpp @ 413:8f8f4375e441
forgot to add homography rescaling script
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Mon, 02 Sep 2013 23:46:31 -0400 |
parents | b829ebdc18e6 |
children |
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> |
401
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
7 #include <algorithm> |
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
8 |
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
9 //#include <boost/algorithm/string.hpp> |
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
10 #include <boost/filesystem.hpp> |
400
7ef1071e3cc3
clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
399
diff
changeset
|
11 |
7ef1071e3cc3
clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
399
diff
changeset
|
12 #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
|
13 #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
|
14 |
401
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
15 namespace fs = boost::filesystem; |
400
7ef1071e3cc3
clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
399
diff
changeset
|
16 |
401
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
17 InputFrameListModule::InputFrameListModule(const std::string& _dirname) |
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
18 : mCurrentIdx(0), mInit(false), dirname(_dirname){ |
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
19 loadImageList(); |
400
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 |
401
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
22 InputFrameListModule::~InputFrameListModule(void) { } |
400
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 |
401
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
25 void InputFrameListModule::setFrameNumber(const unsigned int& frameNumber) { |
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
26 if (frameNumber < filenames.size()) |
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
27 mCurrentIdx = frameNumber; |
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
28 else |
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
29 mCurrentIdx = filenames.size()-1; |
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
30 } |
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
31 |
400
7ef1071e3cc3
clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
399
diff
changeset
|
32 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
|
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 bool success = false; |
401
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
35 if(mCurrentIdx < filenames.size()) { |
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
36 mat = cv::imread(dirname+filenames[mCurrentIdx++]); |
400
7ef1071e3cc3
clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
399
diff
changeset
|
37 |
401
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
38 if(!mat.empty()) |
400
7ef1071e3cc3
clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
399
diff
changeset
|
39 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
|
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 |
7ef1071e3cc3
clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
399
diff
changeset
|
42 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
|
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 |
401
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
45 unsigned int InputFrameListModule::getNbFrames(void) { |
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
46 return filenames.size(); |
400
7ef1071e3cc3
clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
399
diff
changeset
|
47 } |
7ef1071e3cc3
clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
399
diff
changeset
|
48 |
401
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
49 void InputFrameListModule::loadImageList(void) { |
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
50 for (fs::directory_iterator iter(dirname); iter!=fs::directory_iterator(); iter++) |
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
51 filenames.push_back(iter->path().filename().string()); |
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
52 |
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
53 sort(filenames.begin(), filenames.end()); |
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
54 |
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
55 if(!filenames.empty()) { |
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
56 std::cout << dirname+filenames[0] << std::endl; |
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
57 cv::Mat tmpImg = cv::imread(dirname+filenames[0]); |
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
58 mSize = cv::Size(tmpImg.cols, tmpImg.rows); |
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
59 mInit = true; |
b829ebdc18e6
simplified input of directories of video frames (simply use the video filename parameter to point at the directory)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
400
diff
changeset
|
60 } |
400
7ef1071e3cc3
clean up of input classes for list of images and video files
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
399
diff
changeset
|
61 } |