check if scaling values changed
authormarina.kolpakova <marina.kolpakova@itseez.com>
Wed, 14 Nov 2012 16:28:08 +0000 (20:28 +0400)
committermarina.kolpakova <marina.kolpakova@itseez.com>
Wed, 14 Nov 2012 16:28:08 +0000 (20:28 +0400)
modules/gpu/src/softcascade.cpp

index 7f5221f..bf54315 100644 (file)
@@ -248,6 +248,17 @@ struct cv::gpu::SCascade::Fields
         return fields;
     }
 
+    bool check(float mins,float  maxs, int scales)
+    {
+        bool updated = (minScale == mins) || (maxScale == maxs) || (totals = scales);
+
+        minScale = mins;
+        maxScale = maxScale;
+        totals   = scales;
+
+        return updated;
+    }
+
     int createLevels(const int fh, const int fw)
     {
         using namespace device::icf;
@@ -509,7 +520,7 @@ void cv::gpu::SCascade::detect(InputArray image, InputArray _rois, OutputArray _
 
     if (colored.type() == CV_8UC3)
     {
-        if (!flds.update(colored.rows, colored.cols, flds.shrinkage))
+        if (!flds.update(colored.rows, colored.cols, flds.shrinkage) || flds.check(minScale, maxScale, scales))
             flds.createLevels(colored.rows, colored.cols);
         flds.preprocess(colored, s);
     }