diff c/InputFrameListModule.cpp @ 614:5e09583275a4

Merged Nicolas/trafficintelligence into default
author Mohamed Gomaa <eng.m.gom3a@gmail.com>
date Fri, 05 Dec 2014 12:13:53 -0500
parents b829ebdc18e6
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/c/InputFrameListModule.cpp	Fri Dec 05 12:13:53 2014 -0500
@@ -0,0 +1,61 @@
+#include "InputFrameListModule.h"
+#include "utils.hpp"
+
+#include <fstream>
+#include <ostream>
+#include <iostream>
+#include <algorithm>
+
+//#include <boost/algorithm/string.hpp>
+#include <boost/filesystem.hpp>
+
+#include "opencv2/core/core.hpp"
+#include "opencv2/highgui/highgui.hpp"
+
+namespace fs = boost::filesystem;
+
+InputFrameListModule::InputFrameListModule(const std::string& _dirname)
+  : mCurrentIdx(0), mInit(false), dirname(_dirname){
+  loadImageList();
+}
+
+InputFrameListModule::~InputFrameListModule(void) { }
+
+
+void InputFrameListModule::setFrameNumber(const unsigned int& frameNumber) {
+  if (frameNumber < filenames.size())
+    mCurrentIdx = frameNumber;
+  else
+    mCurrentIdx = filenames.size()-1;
+}
+
+bool InputFrameListModule::getNextFrame(cv::Mat& mat)
+{
+  bool success = false;
+  if(mCurrentIdx < filenames.size()) {
+      mat = cv::imread(dirname+filenames[mCurrentIdx++]);
+
+      if(!mat.empty())
+	success = true;
+    }
+	
+  return success;
+}
+
+unsigned int InputFrameListModule::getNbFrames(void) {
+  return filenames.size();
+}
+
+void InputFrameListModule::loadImageList(void) {
+  for (fs::directory_iterator iter(dirname); iter!=fs::directory_iterator(); iter++)
+    filenames.push_back(iter->path().filename().string());
+
+  sort(filenames.begin(), filenames.end());
+
+  if(!filenames.empty()) {
+    std::cout << dirname+filenames[0] << std::endl;
+    cv::Mat tmpImg = cv::imread(dirname+filenames[0]);
+    mSize = cv::Size(tmpImg.cols, tmpImg.rows);
+    mInit = true;
+  }
+}