diff --git a/modules/objdetect/perf/perf_cascadeclassifier.cpp b/modules/objdetect/perf/perf_cascadeclassifier.cpp index b21f38578..78c80f39d 100644 --- a/modules/objdetect/perf/perf_cascadeclassifier.cpp +++ b/modules/objdetect/perf/perf_cascadeclassifier.cpp @@ -54,19 +54,20 @@ typedef perf::TestBaseWithParam detect; namespace { - typedef cv::SCascade::Detection detection_t; +typedef cv::SCascade::Detection detection_t; - void extractRacts(std::vector objectBoxes, vector rects) - { +void extractRacts(std::vector objectBoxes, vector& rects) +{ rects.clear(); 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, - testing::Combine(testing::Values(std::string("cv/softcascade/soft-cascade-17.12.2012.xml")), - testing::Values(std::string("cv/softcascade/bahnhof/image_00000000_0.png")))) + testing::Combine(testing::Values(std::string("cv/cascadeandhog/cascades/inria_caltech-17.01.2013.xml")), + testing::Values(std::string("cv/cascadeandhog/images/image_00000000_0.png")))) { typedef cv::SCascade::Detection Detection; cv::Mat colored = imread(getDataPath(get<1>(GetParam()))); diff --git a/modules/objdetect/test/test_softcascade.cpp b/modules/objdetect/test/test_softcascade.cpp index 903e55812..024ea925a 100644 --- a/modules/objdetect/test/test_softcascade.cpp +++ b/modules/objdetect/test/test_softcascade.cpp @@ -47,7 +47,7 @@ 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::FileStorage fs(xml, cv::FileStorage::READ); ASSERT_TRUE(fs.isOpened()); @@ -57,46 +57,46 @@ TEST(SCascade, readCascade) TEST(SCascade, detect) { 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::FileStorage fs(xml, cv::FileStorage::READ); 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()); std::vector objects; cascade.detect(colored, cv::noArray(), objects); - ASSERT_EQ(823, (int)objects.size()); + ASSERT_EQ(719, (int)objects.size()); } TEST(SCascade, detectSeparate) { 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::FileStorage fs(xml, cv::FileStorage::READ); 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()); cv::Mat rects, confs; cascade.detect(colored, cv::noArray(), rects, confs); - ASSERT_EQ(823, confs.cols); + ASSERT_EQ(719, confs.cols); } TEST(SCascade, detectRoi) { 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::FileStorage fs(xml, cv::FileStorage::READ); 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()); std::vector objects; @@ -104,18 +104,18 @@ TEST(SCascade, detectRoi) rois.push_back(cv::Rect(0, 0, 640, 480)); cascade.detect(colored, rois, objects); - ASSERT_EQ(823, (int)objects.size()); + ASSERT_EQ(719, (int)objects.size()); } TEST(SCascade, detectNoRoi) { 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::FileStorage fs(xml, cv::FileStorage::READ); 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()); std::vector objects; @@ -123,5 +123,22 @@ TEST(SCascade, detectNoRoi) 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 objects; + cascade.detect(colored, cv::Mat::zeros(colored.size(), CV_8UC1), objects); + ASSERT_EQ(0, (int)objects.size()); } \ No newline at end of file