Commit a5351d9e authored by Dmitriy Anisimov's avatar Dmitriy Anisimov Committed by dmitriy.anisimov

added Caltech Pedestrian dataset loading

parent 74fbe96b
......@@ -278,6 +278,32 @@ Currently implemented loading "Scene Recognition Benchmark. SUN397". Planned to
3. To load data run: ./opencv/build/bin/example_datasets_or_sun -p=/home/user/path_to_unpacked_folder/SUN397/
Pedestrian Detection
--------------------
PD_caltech
==========
.. ocv:class:: PD_caltech
Implements loading dataset:
_`"Caltech Pedestrian Detection Benchmark"`: http://www.vision.caltech.edu/Image_Datasets/CaltechPedestrians/
.. note:: First version of Caltech Pedestrian dataset loading.
Code to unpack all frames from seq files commented as their number is huge!
So currently load only meta information without data.
Also ground truth isn't processed, as need to convert it from mat files first.
.. note:: Usage
1. From link above download dataset files: set00.tar-set10.tar.
2. Unpack them to separate folder.
3. To load data run: ./opencv/build/bin/example_datasets_pd_caltech -p=/home/user/path_to_unpacked_folders/
SLAM
----
......
/*M///////////////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
//
// By downloading, copying, installing or using the software you agree to this license.
// If you do not agree to this license, do not download, install,
// copy or use the software.
//
//
// License Agreement
// For Open Source Computer Vision Library
//
// Copyright (C) 2014, Itseez Inc, all rights reserved.
// Third party copyrights are property of their respective owners.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// * Redistribution's of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistribution's in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// * The name of the copyright holders may not be used to endorse or promote products
// derived from this software without specific prior written permission.
//
// This software is provided by the copyright holders and contributors "as is" and
// any express or implied warranties, including, but not limited to, the implied
// warranties of merchantability and fitness for a particular purpose are disclaimed.
// In no event shall the Itseez Inc or contributors be liable for any direct,
// indirect, incidental, special, exemplary, or consequential damages
// (including, but not limited to, procurement of substitute goods or services;
// loss of use, data, or profits; or business interruption) however caused
// and on any theory of liability, whether in contract, strict liability,
// or tort (including negligence or otherwise) arising in any way out of
// the use of this software, even if advised of the possibility of such damage.
//
//M*/
#ifndef OPENCV_DATASETS_PD_CALTECH_HPP
#define OPENCV_DATASETS_PD_CALTECH_HPP
#include <string>
#include <vector>
#include "opencv2/datasets/dataset.hpp"
#include <opencv2/core.hpp>
namespace cv
{
namespace datasets
{
struct PD_caltechObj : public Object
{
//double groundTrue[][];
//Mat image;
std::string name;
std::vector< std::string > imageNames;
};
//
// first version of Caltech Pedestrian dataset loading
// code to unpack all frames from seq files commented as their number is huge
// so currently load only meta information without data
//
// also ground truth isn't processed, as need to convert it from mat files first
//
class CV_EXPORTS PD_caltech : public Dataset
{
public:
virtual void load(const std::string &path) = 0;
static Ptr<PD_caltech> create();
};
}
}
#endif
......@@ -54,6 +54,8 @@ namespace datasets
void CV_EXPORTS split(const std::string &s, std::vector<std::string> &elems, char delim);
void CV_EXPORTS createDirectory(const std::string &path);
void CV_EXPORTS getDirList(const std::string &dirName, std::vector<std::string> &fileNames);
}
......
/*M///////////////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
//
// By downloading, copying, installing or using the software you agree to this license.
// If you do not agree to this license, do not download, install,
// copy or use the software.
//
//
// License Agreement
// For Open Source Computer Vision Library
//
// Copyright (C) 2014, Itseez Inc, all rights reserved.
// Third party copyrights are property of their respective owners.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// * Redistribution's of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistribution's in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// * The name of the copyright holders may not be used to endorse or promote products
// derived from this software without specific prior written permission.
//
// This software is provided by the copyright holders and contributors "as is" and
// any express or implied warranties, including, but not limited to, the implied
// warranties of merchantability and fitness for a particular purpose are disclaimed.
// In no event shall the Itseez Inc or contributors be liable for any direct,
// indirect, incidental, special, exemplary, or consequential damages
// (including, but not limited to, procurement of substitute goods or services;
// loss of use, data, or profits; or business interruption) however caused
// and on any theory of liability, whether in contract, strict liability,
// or tort (including negligence or otherwise) arising in any way out of
// the use of this software, even if advised of the possibility of such damage.
//
//M*/
#include "opencv2/datasets/pd_caltech.hpp"
#include <opencv2/core.hpp>
#include <cstdio>
#include <string>
#include <vector>
using namespace std;
using namespace cv;
using namespace cv::datasets;
int main(int argc, char *argv[])
{
const char *keys =
"{ help h usage ? | | show this message }"
"{ path p |true| path to dataset }";
CommandLineParser parser(argc, argv, keys);
string path(parser.get<string>("path"));
if (parser.has("help") || path=="true")
{
parser.printMessage();
return -1;
}
Ptr<PD_caltech> dataset = PD_caltech::create();
dataset->load(path);
// ***************
// dataset contains for each object its images.
// currently on loading extract all images to folder path/../images/
// For example, let output train size and first element of first object
// and number of it's images.
printf("train size: %u\n", (unsigned int)dataset->getTrain().size());
PD_caltechObj *example = static_cast<PD_caltechObj *>(dataset->getTrain()[0].get());
printf("first train object:\n");
printf("name: %s\n", example->name.c_str());
printf("images number: %u\n", (unsigned int)example->imageNames.size());
printf("first image name: %s\n", example->imageNames[0].c_str());
printf("images were extracted to path/../images/\n");
return 0;
}
......@@ -40,6 +40,7 @@
//M*/
#include "opencv2/datasets/ar_hmdb.hpp"
#include "opencv2/datasets/util.hpp"
#include "precomp.hpp"
namespace cv
......
......@@ -40,6 +40,7 @@
//M*/
#include "opencv2/datasets/ar_sports.hpp"
#include "opencv2/datasets/util.hpp"
#include "precomp.hpp"
namespace cv
......
......@@ -40,6 +40,7 @@
//M*/
#include "opencv2/datasets/dataset.hpp"
#include "opencv2/datasets/util.hpp"
#include "precomp.hpp"
namespace cv
......
......@@ -40,6 +40,7 @@
//M*/
#include "opencv2/datasets/fr_lfw.hpp"
#include "opencv2/datasets/util.hpp"
#include "precomp.hpp"
#include <map>
......
......@@ -40,6 +40,7 @@
//M*/
#include "opencv2/datasets/gr_chalearn.hpp"
#include "opencv2/datasets/util.hpp"
#include "precomp.hpp"
namespace cv
......
......@@ -40,6 +40,7 @@
//M*/
#include "opencv2/datasets/gr_skig.hpp"
#include "opencv2/datasets/util.hpp"
#include "precomp.hpp"
#include <cstring>
......
......@@ -40,6 +40,7 @@
//M*/
#include "opencv2/datasets/hpe_parse.hpp"
#include "opencv2/datasets/util.hpp"
#include "precomp.hpp"
namespace cv
......
......@@ -40,6 +40,7 @@
//M*/
#include "opencv2/datasets/ir_affine.hpp"
#include "opencv2/datasets/util.hpp"
#include "precomp.hpp"
namespace cv
......
......@@ -40,6 +40,7 @@
//M*/
#include "opencv2/datasets/ir_robot.hpp"
#include "opencv2/datasets/util.hpp"
#include "precomp.hpp"
namespace cv
......
......@@ -40,6 +40,7 @@
//M*/
#include "opencv2/datasets/is_bsds.hpp"
#include "opencv2/datasets/util.hpp"
#include "precomp.hpp"
namespace cv
......
......@@ -40,6 +40,7 @@
//M*/
#include "opencv2/datasets/is_weizmann.hpp"
#include "opencv2/datasets/util.hpp"
#include "precomp.hpp"
namespace cv
......
......@@ -40,6 +40,7 @@
//M*/
#include "opencv2/datasets/msm_epfl.hpp"
#include "opencv2/datasets/util.hpp"
#include "precomp.hpp"
namespace cv
......
......@@ -40,6 +40,7 @@
//M*/
#include "opencv2/datasets/msm_middlebury.hpp"
#include "opencv2/datasets/util.hpp"
#include "precomp.hpp"
namespace cv
......
......@@ -40,6 +40,7 @@
//M*/
#include "opencv2/datasets/or_imagenet.hpp"
#include "opencv2/datasets/util.hpp"
#include "precomp.hpp"
namespace cv
......
......@@ -40,6 +40,7 @@
//M*/
#include "opencv2/datasets/or_mnist.hpp"
#include "opencv2/datasets/util.hpp"
#include "precomp.hpp"
namespace cv
......
......@@ -40,6 +40,7 @@
//M*/
#include "opencv2/datasets/or_sun.hpp"
#include "opencv2/datasets/util.hpp"
#include "precomp.hpp"
namespace cv
......
/*M///////////////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
//
// By downloading, copying, installing or using the software you agree to this license.
// If you do not agree to this license, do not download, install,
// copy or use the software.
//
//
// License Agreement
// For Open Source Computer Vision Library
//
// Copyright (C) 2014, Itseez Inc, all rights reserved.
// Third party copyrights are property of their respective owners.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// * Redistribution's of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistribution's in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// * The name of the copyright holders may not be used to endorse or promote products
// derived from this software without specific prior written permission.
//
// This software is provided by the copyright holders and contributors "as is" and
// any express or implied warranties, including, but not limited to, the implied
// warranties of merchantability and fitness for a particular purpose are disclaimed.
// In no event shall the Itseez Inc or contributors be liable for any direct,
// indirect, incidental, special, exemplary, or consequential damages
// (including, but not limited to, procurement of substitute goods or services;
// loss of use, data, or profits; or business interruption) however caused
// and on any theory of liability, whether in contract, strict liability,
// or tort (including negligence or otherwise) arising in any way out of
// the use of this software, even if advised of the possibility of such damage.
//
//M*/
#include "opencv2/datasets/pd_caltech.hpp"
#include "opencv2/datasets/util.hpp"
#include "precomp.hpp"
namespace cv
{
namespace datasets
{
using namespace std;
class CV_EXPORTS PD_caltechImp : public PD_caltech
{
public:
PD_caltechImp() {}
//PD_caltechImp(const string &path);
virtual ~PD_caltechImp() {}
virtual void load(const string &path);
private:
void loadDataset(const string &path);
};
/*PD_caltechImp::PD_caltechImp(const string &path)
{
loadDataset(path);
}*/
void PD_caltechImp::load(const string &path)
{
loadDataset(path);
}
void PD_caltechImp::loadDataset(const string &path)
{
train.push_back(vector< Ptr<Object> >());
test.push_back(vector< Ptr<Object> >());
validation.push_back(vector< Ptr<Object> >());
createDirectory((path + "../images/"));
vector<string> objectNames;
getDirList(path, objectNames);
for (vector<string>::iterator it=objectNames.begin(); it!=objectNames.end(); ++it)
{
Ptr<PD_caltechObj> curr(new PD_caltechObj);
curr->name = *it;
string objectPath(path + "../images/" + curr->name + "/");
createDirectory(objectPath);
string seqImagesPath(path + curr->name + "/");
vector<string> seqNames;
getDirList(seqImagesPath, seqNames);
for (vector<string>::iterator itSeq=seqNames.begin(); itSeq!=seqNames.end(); ++itSeq)
{
string &seqName = *itSeq;
createDirectory((objectPath + seqName));
FILE *f = fopen((seqImagesPath + seqName).c_str(), "rb");
#define SKIP 28+8+512
fseek(f, SKIP, SEEK_CUR);
unsigned int header[9];
size_t res = fread(header, 9, 4, f);
double fps;
res = fread(&fps, 1, 8, f);
fseek(f, 432, SEEK_CUR);
/*printf("width %u\n", header[0]);
printf("height %u\n", header[1]);
printf("imageBitDepth %u\n", header[2]);
printf("imageBitDepthReal %u\n", header[3]);
printf("imageSizeBytes %u\n", header[4]);
printf("imageFormat %u\n", header[5]);
printf("numFrames %u\n", numFrames);
printf("fps %f\n", fps);
printf("trueImageSize %u\n", header[8]);*/
unsigned int numFrames = header[6];
string ext;
switch (header[5])
{
case 100:
case 200:
ext = "raw";
break;
case 101:
ext = "brgb8";
break;
case 102:
case 201:
ext = "jpg";
break;
case 103:
ext = "jbrgb";
break;
case 001:
case 002:
ext = "png";
break;
}
for (unsigned int i=0; i<numFrames; ++i)
{
unsigned int size;
res = fread(&size, 1, 4, f);
char imgName[20];
sprintf(imgName, "/%u.%s", i, ext.c_str());
curr->imageNames.push_back(imgName);
// comment fseek and uncomment next block to unpack all frames
fseek(f, size, SEEK_CUR);
/*char *img = new char[size];
fread(img, size, 1, f);
string imgPath(objectPath + seqName + imgName);
FILE *fImg = fopen(imgPath.c_str(), "wb");
fwrite(img, size, 1, fImg);
fclose(fImg);
delete[] img;*/
fseek(f, 12, SEEK_CUR);
}
fclose(f);
}
train.back().push_back(curr);
}
}
Ptr<PD_caltech> PD_caltech::create()
{
return Ptr<PD_caltechImp>(new PD_caltechImp);
}
}
}
......@@ -47,6 +47,4 @@
#include <fstream>
#include "opencv2/datasets/util.hpp"
#endif
......@@ -40,6 +40,7 @@
//M*/
#include "opencv2/datasets/slam_kitti.hpp"
#include "opencv2/datasets/util.hpp"
#include "precomp.hpp"
namespace cv
......
......@@ -40,6 +40,7 @@
//M*/
#include "opencv2/datasets/slam_tumindoor.hpp"
#include "opencv2/datasets/util.hpp"
#include "precomp.hpp"
#include <cstring>
......
......@@ -40,6 +40,7 @@
//M*/
#include "opencv2/datasets/tr_chars.hpp"
#include "opencv2/datasets/util.hpp"
#include "precomp.hpp"
namespace cv
......
......@@ -40,6 +40,7 @@
//M*/
#include "opencv2/datasets/tr_svt.hpp"
#include "opencv2/datasets/util.hpp"
#include "precomp.hpp"
#include <opencv2/datasets/tinyxml2/tinyxml2.h>
......
......@@ -48,6 +48,7 @@
#ifdef __GNUC__
#include <unistd.h>
#include <dirent.h>
#include <sys/stat.h>
#else
#include <io.h>
#include <direct.h>
......@@ -70,6 +71,15 @@ void split(const string &s, vector<string> &elems, char delim)
}
}
void createDirectory(const string &path)
{
#ifdef __GNUC__
mkdir(path.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
#else
mkdir(path.c_str());
#endif
}
void getDirList(const string &dirName, vector<string> &fileNames)
{
#ifdef __GNUC__
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment