diff --git a/modules/objdetect/perf/perf_cascadeclassifier.cpp b/modules/objdetect/perf/perf_cascadeclassifier.cpp index 1ff409084d..b21f38578e 100644 --- a/modules/objdetect/perf/perf_cascadeclassifier.cpp +++ b/modules/objdetect/perf/perf_cascadeclassifier.cpp @@ -65,15 +65,15 @@ namespace { } PERF_TEST_P(detect, SCascade, - testing::Combine(testing::Values(std::string("cv/cascadeandhog/sc_cvpr_2012_to_opencv.xml")), - testing::Values(std::string("cv/cascadeandhog/bahnhof/image_00000000_0.png")))) + 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")))) { typedef cv::SCascade::Detection Detection; cv::Mat colored = imread(getDataPath(get<1>(GetParam()))); ASSERT_FALSE(colored.empty()); cv::SCascade cascade; - cv::FileStorage fs("/home/kellan/soft-cascade-17.12.2012/first-soft-cascade-composide-octave_1.xml", cv::FileStorage::READ); + cv::FileStorage fs(getDataPath(get<0>(GetParam())), cv::FileStorage::READ); ASSERT_TRUE(fs.isOpened()); ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); @@ -89,4 +89,4 @@ PERF_TEST_P(detect, SCascade, extractRacts(objectBoxes, rects); std::sort(rects.begin(), rects.end(), comparators::RectLess()); SANITY_CHECK(rects); -} +} \ No newline at end of file diff --git a/modules/objdetect/test/test_softcascade.cpp b/modules/objdetect/test/test_softcascade.cpp index 1d2fbb1d89..903e55812f 100644 --- a/modules/objdetect/test/test_softcascade.cpp +++ b/modules/objdetect/test/test_softcascade.cpp @@ -43,143 +43,85 @@ #include #include -static std::string itoa(int i) -{ - static char s[65]; - sprintf(s, "%03d", i); - return std::string(s); -} - #include "test_precomp.hpp" -#include - -TEST(SCascade, detect1) -{ - typedef cv::SCascade::Detection Detection; - std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/sc_cvpr_2012_to_opencv.xml"; - cv::SCascade cascade; - cascade.set("rejCriteria", cv::SCascade::DOLLAR); - // cascade.set("minScale", 0.5); - // cascade.set("scales", 2); - cv::FileStorage fs("/home/kellan/soft-cascade-17.12.2012/first-soft-cascade-composide-octave_1.xml", cv::FileStorage::READ); - ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); - - for (int sample = 0; sample < 1000; ++sample) - { - - // std::cout << itoa(sample) << std::endl; - std::cout << std::string("/home/kellan/bahnhof-l/image_00000" + itoa(sample) + "_0.png") << std::endl; - cv::Mat colored = cv::imread(std::string("/home/kellan/bahnhof-l/image_00000" + itoa(sample) + "_0.png")); - ASSERT_FALSE(colored.empty()); - - - std::vector objects; - cascade.detect(colored, cv::noArray(), objects); - - for (int i = 0; i < (int)objects.size(); ++i) - cv::rectangle(colored, objects[i].bb, cv::Scalar(51, 160, 255, 255), 1); - - // cv::Mat res; - // cv::resize(colored, res, cv::Size(), 4,4); - cv::imshow("detections", colored); - cv::waitKey(20); - // cv::imwrite(std::string("/home/kellan/res/image_00000" + itoa(sample) + ".png"), colored); - } - - // ASSERT_EQ(1459, (int)objects.size()); -} TEST(SCascade, readCascade) { - std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/test-simple-cascade.xml"; + std::string xml = cvtest::TS::ptr()->get_data_path() + "softcascade/soft-cascade-17.12.2012.xml"; cv::SCascade cascade; - cv::FileStorage fs("/home/kellan/soft-cascade-17.12.2012/first-soft-cascade-composide-octave_1.xml", cv::FileStorage::READ); + cv::FileStorage fs(xml, cv::FileStorage::READ); ASSERT_TRUE(fs.isOpened()); ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); } -// TEST(SCascade, detect) -// { -// typedef cv::SCascade::Detection Detection; -// std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/sc_cvpr_2012_to_opencv.xml"; -// cv::SCascade cascade; -// // cascade.set("maxScale", 0.5); -// // cascade.set("minScale", 0.5); -// // cascade.set("scales", 2); +TEST(SCascade, detect) +{ + typedef cv::SCascade::Detection Detection; + std::string xml = cvtest::TS::ptr()->get_data_path() + "softcascade/soft-cascade-17.12.2012.xml"; + cv::SCascade cascade; + cv::FileStorage fs(xml, cv::FileStorage::READ); + ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); -// cv::FileStorage fs("/home/kellan/soft-cascade-17.12.2012/first-soft-cascade-composide-octave_1.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"); + ASSERT_FALSE(colored.empty()); -// // 454 -// cv::Mat colored = cv::imread(cvtest::TS::ptr()->get_data_path() + "cascadeandhog/bahnhof/image_00000000_0.png");//"/home/kellan/datasets/INRIA/training_set/pos/octave_-1/sample_1.png");//cvtest::TS::ptr()->get_data_path() + "cascadeandhog/bahnhof/image_00000000_0.png"); -// ASSERT_FALSE(colored.empty()); + std::vector objects; + cascade.detect(colored, cv::noArray(), objects); -// std::vector objects; + ASSERT_EQ(823, (int)objects.size()); +} -// cascade.detect(colored, cv::noArray(), objects); +TEST(SCascade, detectSeparate) +{ + typedef cv::SCascade::Detection Detection; + std::string xml = cvtest::TS::ptr()->get_data_path() + "softcascade/soft-cascade-17.12.2012.xml"; + cv::SCascade cascade; + cv::FileStorage fs(xml, cv::FileStorage::READ); + ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); -// for (int i = 0; i < objects.size(); ++i) -// cv::rectangle(colored, objects[i].bb, cv::Scalar::all(255), 1); + cv::Mat colored = cv::imread(cvtest::TS::ptr()->get_data_path() + "softcascade/bahnhof/image_00000000_0.png"); + ASSERT_FALSE(colored.empty()); -// cv::Mat res; -// cv::resize(colored, res, cv::Size(), 4,4); -// cv::imshow("detections", colored); -// cv::waitKey(0); + cv::Mat rects, confs; -// // ASSERT_EQ(1459, (int)objects.size()); -// } + cascade.detect(colored, cv::noArray(), rects, confs); + ASSERT_EQ(823, confs.cols); +} -// TEST(SCascade, detectSeparate) -// { -// typedef cv::SCascade::Detection Detection; -// std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/sc_cvpr_2012_to_opencv.xml"; -// cv::SCascade cascade; -// cv::FileStorage fs(xml, cv::FileStorage::READ); -// ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); +TEST(SCascade, detectRoi) +{ + typedef cv::SCascade::Detection Detection; + std::string xml = cvtest::TS::ptr()->get_data_path() + "softcascade/soft-cascade-17.12.2012.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/bahnhof/image_00000000_0.png"); -// ASSERT_FALSE(colored.empty()); + cv::Mat colored = cv::imread(cvtest::TS::ptr()->get_data_path() + "softcascade/bahnhof/image_00000000_0.png"); + ASSERT_FALSE(colored.empty()); -// cv::Mat rects, confs; + std::vector objects; + std::vector rois; + rois.push_back(cv::Rect(0, 0, 640, 480)); -// cascade.detect(colored, cv::noArray(), rects, confs); -// ASSERT_EQ(1459, confs.cols); -// } + cascade.detect(colored, rois, objects); + ASSERT_EQ(823, (int)objects.size()); +} -// TEST(SCascade, detectRoi) -// { -// typedef cv::SCascade::Detection Detection; -// std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/sc_cvpr_2012_to_opencv.xml"; -// cv::SCascade cascade; -// cv::FileStorage fs(xml, cv::FileStorage::READ); -// ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); +TEST(SCascade, detectNoRoi) +{ + typedef cv::SCascade::Detection Detection; + std::string xml = cvtest::TS::ptr()->get_data_path() + "softcascade/soft-cascade-17.12.2012.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/bahnhof/image_00000000_0.png"); -// ASSERT_FALSE(colored.empty()); + cv::Mat colored = cv::imread(cvtest::TS::ptr()->get_data_path() + "softcascade/bahnhof/image_00000000_0.png"); + ASSERT_FALSE(colored.empty()); -// std::vector objects; -// std::vector rois; -// rois.push_back(cv::Rect(0, 0, 640, 480)); + std::vector objects; + std::vector rois; -// cascade.detect(colored, rois, objects); -// ASSERT_EQ(1459, (int)objects.size()); -// } + cascade.detect(colored, rois, objects); -// TEST(SCascade, detectNoRoi) -// { -// typedef cv::SCascade::Detection Detection; -// std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/sc_cvpr_2012_to_opencv.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/bahnhof/image_00000000_0.png"); -// ASSERT_FALSE(colored.empty()); - -// std::vector objects; -// std::vector rois; - -// cascade.detect(colored, rois, objects); - -// ASSERT_EQ(0, (int)objects.size()); -// } \ No newline at end of file + ASSERT_EQ(0, (int)objects.size()); +} \ No newline at end of file