/*M/////////////////////////////////////////////////////////////////////////////////////// // // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. // // By downloading, copying, installing or using the software you agree to this license. // If you do not agree to this license, do not download, install, // copy or use the software. // // // License Agreement // For Open Source Computer Vision Library // // Copyright (C) 2000-2008, Intel Corporation, all rights reserved. // Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved. // Third party copyrights are property of their respective owners. // // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistribution's of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // // * Redistribution's in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // // * The name of the copyright holders may not be used to endorse or promote products // derived from this software without specific prior written permission. // // This software is provided by the copyright holders and contributors "as is" and // any express or implied warranties, including, but not limited to, the implied // warranties of merchantability and fitness for a particular purpose are disclaimed. // In no event shall the Intel Corporation or contributors be liable for any direct, // indirect, incidental, special, exemplary, or consequential damages // (including, but not limited to, procurement of substitute goods or services; // loss of use, data, or profits; or business interruption) however caused // and on any theory of liability, whether in contract, strict liability, // or tort (including negligence or otherwise) arising in any way out of // the use of this software, even if advised of the possibility of such damage. // //M*/ #include <string> #include <fstream> static std::string itoa(int i) { static char s[65]; sprintf(s, "%03d", i); return std::string(s); } #include "test_precomp.hpp" #include <opencv2/highgui/highgui.hpp> 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("rejfactor", 0.5); // 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<Detection> 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"; cv::SCascade cascade; cv::FileStorage fs("/home/kellan/soft-cascade-17.12.2012/first-soft-cascade-composide-octave_1.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); // 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())); // // 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<Detection> objects; // cascade.detect(colored, cv::noArray(), objects); // for (int i = 0; i < objects.size(); ++i) // cv::rectangle(colored, objects[i].bb, cv::Scalar::all(255), 1); // cv::Mat res; // cv::resize(colored, res, cv::Size(), 4,4); // cv::imshow("detections", colored); // cv::waitKey(0); // // ASSERT_EQ(1459, (int)objects.size()); // } // 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())); // cv::Mat colored = cv::imread(cvtest::TS::ptr()->get_data_path() + "cascadeandhog/bahnhof/image_00000000_0.png"); // ASSERT_FALSE(colored.empty()); // cv::Mat rects, confs; // cascade.detect(colored, cv::noArray(), rects, confs); // ASSERT_EQ(1459, confs.cols); // } // 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())); // cv::Mat colored = cv::imread(cvtest::TS::ptr()->get_data_path() + "cascadeandhog/bahnhof/image_00000000_0.png"); // ASSERT_FALSE(colored.empty()); // std::vector<Detection> objects; // std::vector<cv::Rect> rois; // rois.push_back(cv::Rect(0, 0, 640, 480)); // cascade.detect(colored, rois, objects); // ASSERT_EQ(1459, (int)objects.size()); // } // 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<Detection> objects; // std::vector<cv::Rect> rois; // cascade.detect(colored, rois, objects); // ASSERT_EQ(0, (int)objects.size()); // }