integrated 128x256 scale
authormarina.kolpakova <marina.kolpakova@itseez.com>
Wed, 19 Dec 2012 04:39:06 +0000 (08:39 +0400)
committermarina.kolpakova <marina.kolpakova@itseez.com>
Fri, 18 Jan 2013 11:58:47 +0000 (15:58 +0400)
modules/objdetect/src/softcascade.cpp

index 554fcb5..5b2724e 100644 (file)
@@ -41,6 +41,7 @@
 //M*/
 
 #include "precomp.hpp"
+#include <iostream>
 
 namespace {
 
@@ -56,7 +57,6 @@ struct Octave
     float scale;
 
     cv::Size size;
-    int shrinkage;
 
     static const char *const SC_OCT_SCALE;
     static const char *const SC_OCT_WEAKS;
@@ -111,7 +111,6 @@ struct Feature
 
     static const char *const SC_F_CHANNEL;
     static const char *const SC_F_RECT;
-
 };
 
 const char *const Octave::SC_OCT_SCALE      = "scale";
@@ -140,6 +139,8 @@ struct Level
        workRect(cv::Size(cvRound(w / (float)shrinkage),cvRound(h / (float)shrinkage))),
        objSize(cv::Size(cvRound(oct.size.width * relScale), cvRound(oct.size.height * relScale)))
     {
+        std::cout << "Level " << oct.scale << " " << scale << " " << shrinkage << " " << w << " " << h << std::endl;
+
         scaling[0] = ((relScale >= 1.f)? 1.f : (0.89f * pow(relScale, 1.099f / log(2.f)))) / (relScale * relScale);
         scaling[1] = 1.f;
         scaleshift = static_cast<int>(relScale * (1 << 16));
@@ -242,7 +243,7 @@ struct cv::SCascade::Fields
 
         const Octave& octave = *(level.octave);
 
-        int stBegin = octave.index * octave.weaks, stEnd = stBegin + ((octave.index)? 1024 : 416;
+        int stBegin = octave.index * octave.weaks, stEnd = stBegin + ((octave.index)? 1024 : 416);
 
         int st = stBegin;
         int offset = (octave.index)? -2: 0;
@@ -362,7 +363,6 @@ struct cv::SCascade::Fields
         static const char *const SC_INTERNAL         = "internalNodes";
         static const char *const SC_LEAF             = "leafValues";
 
-
         // only Ada Boost supported
         std::string stageTypeStr = (string)root[SC_STAGE_TYPE];
         CV_Assert(stageTypeStr == SC_BOOST);
@@ -412,7 +412,7 @@ struct cv::SCascade::Fields
 
                 fns = (*st)[SC_LEAF];
                 inIt = fns.begin(), inIt_end = fns.end();
-                int l = 0;
+                // int l = 0;
                 for (; inIt != inIt_end; ++inIt)
                 {
                     leaves.push_back((float)(*inIt));
@@ -430,9 +430,15 @@ struct cv::SCascade::Fields
 
             feature_offset += octave.weaks * 3;
             ++octIndex;
+
+            std::cout << "octaves " << octaves.size() << std::endl;
+            std::cout << "stages " << stages.size() << std::endl;
+            std::cout << "nodes " << nodes.size() << std::endl;
+            std::cout << "leaves " << leaves.size() << std::endl;
+            std::cout << "features " << features.size() << std::endl;
         }
 
-        shrinkage = octaves[0].shrinkage;
+        // exit(0);
         return true;
     }
 };
@@ -518,7 +524,9 @@ void cv::SCascade::detectNoRoi(const cv::Mat& image, std::vector<Detection>& obj
     {
         const Level& level = *it;
 
-        if (i++ == 26) return;
+        if (level.octave->index != 2) continue;
+
+        std::cout << level.origScale << std::endl;
 
         for (int dy = 0; dy < level.workRect.height; ++dy)
         {