fix test for new cascade

This commit is contained in:
marina.kolpakova 2013-01-18 16:38:54 +04:00
parent 53433884ee
commit e15bdea663
2 changed files with 37 additions and 19 deletions

@ -54,19 +54,20 @@ typedef perf::TestBaseWithParam<fixture> detect;
namespace { namespace {
typedef cv::SCascade::Detection detection_t; typedef cv::SCascade::Detection detection_t;
void extractRacts(std::vector<detection_t> objectBoxes, vector<Rect> rects) void extractRacts(std::vector<detection_t> objectBoxes, vector<Rect>& rects)
{ {
rects.clear(); rects.clear();
for (int i = 0; i < (int)objectBoxes.size(); ++i) for (int i = 0; i < (int)objectBoxes.size(); ++i)
rects.push_back(objectBoxes[i].bb); rects.push_back(objectBoxes[i].bb);
} }
} }
PERF_TEST_P(detect, SCascade, PERF_TEST_P(detect, SCascade,
testing::Combine(testing::Values(std::string("cv/softcascade/soft-cascade-17.12.2012.xml")), testing::Combine(testing::Values(std::string("cv/cascadeandhog/cascades/inria_caltech-17.01.2013.xml")),
testing::Values(std::string("cv/softcascade/bahnhof/image_00000000_0.png")))) testing::Values(std::string("cv/cascadeandhog/images/image_00000000_0.png"))))
{ {
typedef cv::SCascade::Detection Detection; typedef cv::SCascade::Detection Detection;
cv::Mat colored = imread(getDataPath(get<1>(GetParam()))); cv::Mat colored = imread(getDataPath(get<1>(GetParam())));

@ -47,7 +47,7 @@
TEST(SCascade, readCascade) TEST(SCascade, readCascade)
{ {
std::string xml = cvtest::TS::ptr()->get_data_path() + "softcascade/soft-cascade-17.12.2012.xml"; std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/cascades/inria_caltech-17.01.2013.xml";
cv::SCascade cascade; cv::SCascade cascade;
cv::FileStorage fs(xml, cv::FileStorage::READ); cv::FileStorage fs(xml, cv::FileStorage::READ);
ASSERT_TRUE(fs.isOpened()); ASSERT_TRUE(fs.isOpened());
@ -57,46 +57,46 @@ TEST(SCascade, readCascade)
TEST(SCascade, detect) TEST(SCascade, detect)
{ {
typedef cv::SCascade::Detection Detection; typedef cv::SCascade::Detection Detection;
std::string xml = cvtest::TS::ptr()->get_data_path() + "softcascade/soft-cascade-17.12.2012.xml"; std::string xml = cvtest::TS::ptr()->get_data_path()+ "cascadeandhog/cascades/inria_caltech-17.01.2013.xml";
cv::SCascade cascade; cv::SCascade cascade;
cv::FileStorage fs(xml, cv::FileStorage::READ); cv::FileStorage fs(xml, cv::FileStorage::READ);
ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode()));
cv::Mat colored = cv::imread(cvtest::TS::ptr()->get_data_path() + "softcascade/bahnhof/image_00000000_0.png"); cv::Mat colored = cv::imread(cvtest::TS::ptr()->get_data_path() + "cascadeandhog/images/image_00000000_0.png");
ASSERT_FALSE(colored.empty()); ASSERT_FALSE(colored.empty());
std::vector<Detection> objects; std::vector<Detection> objects;
cascade.detect(colored, cv::noArray(), objects); cascade.detect(colored, cv::noArray(), objects);
ASSERT_EQ(823, (int)objects.size()); ASSERT_EQ(719, (int)objects.size());
} }
TEST(SCascade, detectSeparate) TEST(SCascade, detectSeparate)
{ {
typedef cv::SCascade::Detection Detection; typedef cv::SCascade::Detection Detection;
std::string xml = cvtest::TS::ptr()->get_data_path() + "softcascade/soft-cascade-17.12.2012.xml"; std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/cascades/inria_caltech-17.01.2013.xml";
cv::SCascade cascade; cv::SCascade cascade;
cv::FileStorage fs(xml, cv::FileStorage::READ); cv::FileStorage fs(xml, cv::FileStorage::READ);
ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode()));
cv::Mat colored = cv::imread(cvtest::TS::ptr()->get_data_path() + "softcascade/bahnhof/image_00000000_0.png"); cv::Mat colored = cv::imread(cvtest::TS::ptr()->get_data_path() + "cascadeandhog/images/image_00000000_0.png");
ASSERT_FALSE(colored.empty()); ASSERT_FALSE(colored.empty());
cv::Mat rects, confs; cv::Mat rects, confs;
cascade.detect(colored, cv::noArray(), rects, confs); cascade.detect(colored, cv::noArray(), rects, confs);
ASSERT_EQ(823, confs.cols); ASSERT_EQ(719, confs.cols);
} }
TEST(SCascade, detectRoi) TEST(SCascade, detectRoi)
{ {
typedef cv::SCascade::Detection Detection; typedef cv::SCascade::Detection Detection;
std::string xml = cvtest::TS::ptr()->get_data_path() + "softcascade/soft-cascade-17.12.2012.xml"; std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/cascades/inria_caltech-17.01.2013.xml";
cv::SCascade cascade; cv::SCascade cascade;
cv::FileStorage fs(xml, cv::FileStorage::READ); cv::FileStorage fs(xml, cv::FileStorage::READ);
ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode()));
cv::Mat colored = cv::imread(cvtest::TS::ptr()->get_data_path() + "softcascade/bahnhof/image_00000000_0.png"); cv::Mat colored = cv::imread(cvtest::TS::ptr()->get_data_path() + "cascadeandhog/images/image_00000000_0.png");
ASSERT_FALSE(colored.empty()); ASSERT_FALSE(colored.empty());
std::vector<Detection> objects; std::vector<Detection> objects;
@ -104,18 +104,18 @@ TEST(SCascade, detectRoi)
rois.push_back(cv::Rect(0, 0, 640, 480)); rois.push_back(cv::Rect(0, 0, 640, 480));
cascade.detect(colored, rois, objects); cascade.detect(colored, rois, objects);
ASSERT_EQ(823, (int)objects.size()); ASSERT_EQ(719, (int)objects.size());
} }
TEST(SCascade, detectNoRoi) TEST(SCascade, detectNoRoi)
{ {
typedef cv::SCascade::Detection Detection; typedef cv::SCascade::Detection Detection;
std::string xml = cvtest::TS::ptr()->get_data_path() + "softcascade/soft-cascade-17.12.2012.xml"; std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/cascades/inria_caltech-17.01.2013.xml";
cv::SCascade cascade; cv::SCascade cascade;
cv::FileStorage fs(xml, cv::FileStorage::READ); cv::FileStorage fs(xml, cv::FileStorage::READ);
ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode()));
cv::Mat colored = cv::imread(cvtest::TS::ptr()->get_data_path() + "softcascade/bahnhof/image_00000000_0.png"); cv::Mat colored = cv::imread(cvtest::TS::ptr()->get_data_path() + "cascadeandhog/images/image_00000000_0.png");
ASSERT_FALSE(colored.empty()); ASSERT_FALSE(colored.empty());
std::vector<Detection> objects; std::vector<Detection> objects;
@ -123,5 +123,22 @@ TEST(SCascade, detectNoRoi)
cascade.detect(colored, rois, objects); cascade.detect(colored, rois, objects);
ASSERT_EQ(719, (int)objects.size());
}
TEST(SCascade, detectEmptyRoi)
{
typedef cv::SCascade::Detection Detection;
std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/cascades/inria_caltech-17.01.2013.xml";
cv::SCascade cascade;
cv::FileStorage fs(xml, cv::FileStorage::READ);
ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode()));
cv::Mat colored = cv::imread(cvtest::TS::ptr()->get_data_path() + "cascadeandhog/images/image_00000000_0.png");
ASSERT_FALSE(colored.empty());
std::vector<Detection> objects;
cascade.detect(colored, cv::Mat::zeros(colored.size(), CV_8UC1), objects);
ASSERT_EQ(0, (int)objects.size()); ASSERT_EQ(0, (int)objects.size());
} }