load SoftCascade from FileStorage
This commit is contained in:
parent
a22ee13620
commit
017d970b9a
@ -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());
|
||||
|
Loading…
x
Reference in New Issue
Block a user