load SoftCascade from FileStorage
This commit is contained in:
parent
a22ee13620
commit
017d970b9a
@ -500,25 +500,29 @@ public:
|
|||||||
float confidence;
|
float confidence;
|
||||||
int kind;
|
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) {}
|
Detection(const cv::Rect& r, const float c, int k = PEDESTRIAN) : rect(r), confidence(c), kind(k) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
//! An empty cascade will be created.
|
//! An empty cascade will be created.
|
||||||
SoftCascade();
|
SoftCascade();
|
||||||
|
|
||||||
//! Cascade will be created from file for scales from minScale to maxScale.
|
//! Cascade will be created for scales from minScale to maxScale.
|
||||||
//! Param filename is a path to xml-serialized cascade.
|
//! 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 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.
|
//! 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.
|
//! cascade will be loaded. The previous cascade will be destroyed.
|
||||||
//! Param filename is a path to xml-serialized cascade.
|
//! 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 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.
|
//! 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();
|
virtual ~SoftCascade();
|
||||||
|
|
||||||
|
@ -65,7 +65,8 @@ PERF_TEST_P(detect, SoftCascade,
|
|||||||
ASSERT_FALSE(colored.empty());
|
ASSERT_FALSE(colored.empty());
|
||||||
|
|
||||||
cv::SoftCascade cascade;
|
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<cv::Rect> rois;
|
||||||
std::vector<detection_t> objectBoxes;
|
std::vector<detection_t> objectBoxes;
|
||||||
|
@ -499,24 +499,23 @@ struct cv::SoftCascade::Filds
|
|||||||
|
|
||||||
cv::SoftCascade::SoftCascade() : filds(0) {}
|
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()
|
cv::SoftCascade::~SoftCascade()
|
||||||
{
|
{
|
||||||
delete filds;
|
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)
|
if (filds)
|
||||||
delete filds;
|
delete filds;
|
||||||
filds = 0;
|
filds = 0;
|
||||||
|
|
||||||
cv::FileStorage fs(filename, FileStorage::READ);
|
|
||||||
if (!fs.isOpened()) return false;
|
|
||||||
|
|
||||||
filds = new Filds;
|
filds = new Filds;
|
||||||
Filds& flds = *filds;
|
Filds& flds = *filds;
|
||||||
if (!flds.fill(fs.getFirstTopLevelNode(), minScale, maxScale)) return false;
|
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";
|
std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/icf-template.xml";
|
||||||
cv::SoftCascade cascade;
|
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;
|
typedef cv::SoftCascade::Detection detection_t;
|
||||||
std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/sc_cvpr_2012_to_opencv.xml";
|
std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/sc_cvpr_2012_to_opencv.xml";
|
||||||
cv::SoftCascade cascade;
|
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");
|
cv::Mat colored = cv::imread(cvtest::TS::ptr()->get_data_path() + "cascadeandhog/bahnhof/image_00000000_0.png");
|
||||||
ASSERT_FALSE(colored.empty());
|
ASSERT_FALSE(colored.empty());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user