float confidence;
int kind;
- enum {PEDESTRIAN = 0};
+ enum {PEDESTRIAN = 1};
+ //! Create detection from an object bounding rectangle and confidence. Only PEDESTRIAN type carrently supported.
+ //! Param r is a boundinf rectangle
+ //! param c is a confidence that object belongs to class k
+ //! Paral k is an object class
Detection(const cv::Rect& r, const float c, int k = PEDESTRIAN) : rect(r), confidence(c), kind(k) {}
};
//! An empty cascade will be created.
SoftCascade();
- //! Cascade will be created from file for scales from minScale to maxScale.
- //! Param filename is a path to xml-serialized cascade.
+ //! Cascade will be created for scales from minScale to maxScale.
+ //! Param fs is a serialized sacsade.
//! Param minScale is a minimum scale relative to the original size of the image on which cascade will be applyed.
//! Param minScale is a maximum scale relative to the original size of the image on which cascade will be applyed.
- SoftCascade( const string& filename, const float minScale = 0.4f, const float maxScale = 5.f);
+ SoftCascade( const cv::FileStorage& fs, const float minScale = 0.4f, const float maxScale = 5.f);
- //! cascade will be loaded from file "filename". The previous cascade will be destroyed.
- //! Param filename is a path to xml-serialized cascade.
+ //! cascade will be loaded. The previous cascade will be destroyed.
+ //! Param fs is a serialized sacsade.
//! Param minScale is a minimum scale relative to the original size of the image on which cascade will be applyed.
//! Param minScale is a maximum scale relative to the original size of the image on which cascade will be applyed.
- bool load( const string& filename, const float minScale = 0.4f, const float maxScale = 5.f);
+ bool read( const cv::FileStorage& fs, const float minScale = 0.4f, const float maxScale = 5.f);
virtual ~SoftCascade();
ASSERT_FALSE(colored.empty());
cv::SoftCascade cascade;
- ASSERT_TRUE(cascade.load(getDataPath(get<0>(GetParam()))));
+ cv::FileStorage fs(getDataPath(get<0>(GetParam())), cv::FileStorage::READ);
+ ASSERT_TRUE(cascade.read(fs));
std::vector<cv::Rect> rois;
std::vector<detection_t> objectBoxes;
cv::SoftCascade::SoftCascade() : filds(0) {}
-cv::SoftCascade::SoftCascade( const string& filename, const float minScale, const float maxScale) : filds(0)
+cv::SoftCascade::SoftCascade(const cv::FileStorage& fs, const float minScale, const float maxScale) : filds(0)
{
- load(filename, minScale, maxScale);
+ read(fs, minScale, maxScale);
}
cv::SoftCascade::~SoftCascade()
{
delete filds;
}
-bool cv::SoftCascade::load( const string& filename, const float minScale, const float maxScale)
+bool cv::SoftCascade::read( const cv::FileStorage& fs, const float minScale, const float maxScale)
{
+ if (!fs.isOpened()) return false;
+
if (filds)
delete filds;
filds = 0;
- cv::FileStorage fs(filename, FileStorage::READ);
- if (!fs.isOpened()) return false;
-
filds = new Filds;
Filds& flds = *filds;
if (!flds.fill(fs.getFirstTopLevelNode(), minScale, maxScale)) return false;
{
std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/icf-template.xml";
cv::SoftCascade cascade;
- ASSERT_TRUE(cascade.load(xml));
+ cv::FileStorage fs(xml, cv::FileStorage::READ);
+ ASSERT_TRUE(cascade.read(fs));
}
typedef cv::SoftCascade::Detection detection_t;
std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/sc_cvpr_2012_to_opencv.xml";
cv::SoftCascade cascade;
- ASSERT_TRUE(cascade.load(xml));
+ cv::FileStorage fs(xml, cv::FileStorage::READ);
+ ASSERT_TRUE(cascade.read(fs));
cv::Mat colored = cv::imread(cvtest::TS::ptr()->get_data_path() + "cascadeandhog/bahnhof/image_00000000_0.png");
ASSERT_FALSE(colored.empty());