提交 017d970b 编写于 作者: M marina.kolpakova

load SoftCascade from FileStorage

上级 a22ee136
......@@ -500,25 +500,29 @@ public:
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();
......
......@@ -65,7 +65,8 @@ PERF_TEST_P(detect, 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;
......
......@@ -499,24 +499,23 @@ struct cv::SoftCascade::Filds
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;
......
......@@ -45,7 +45,8 @@ TEST(SoftCascade, readCascade)
{
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));
}
......@@ -54,7 +55,8 @@ TEST(SoftCascade, detect)
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());
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册