add const qualifier to detectMultiScale method
authormarina.kolpakova <marina.kolpakova@itseez.com>
Sat, 6 Oct 2012 11:15:59 +0000 (15:15 +0400)
committermarina.kolpakova <marina.kolpakova@itseez.com>
Tue, 6 Nov 2012 23:19:06 +0000 (03:19 +0400)
modules/objdetect/include/opencv2/objdetect/objdetect.hpp
modules/objdetect/src/softcascade.cpp

index bb4240f..fd48b32 100644 (file)
@@ -512,7 +512,7 @@ public:
 
     //! return vector of bounding boxes. Each box contains one detected object
     virtual void detectMultiScale(const Mat& image, const std::vector<cv::Rect>& rois, std::vector<cv::Rect>& objects,
-    int rejectfactor = 1);
+    int rejectfactor = 1) const;
 
 protected:
     enum { BOOST = 0 };
index dcdf263..d3c5821 100644 (file)
@@ -419,7 +419,6 @@ struct cv::SoftCascade::Filds
     float rescale(const Feature& feature, const float scaling, const float relScale,
         cv::Rect& scaledRect, const float threshold) const
     {
-        // float scaling = CascadeIntrinsics::getFor(feature.channel, relScale);
         scaledRect = feature.rect;
 
         dprintf("feature %d box %d %d %d %d\n", feature.channel, scaledRect.x, scaledRect.y,
@@ -439,18 +438,13 @@ struct cv::SoftCascade::Filds
 
         float sarea = (scaledRect.width - scaledRect.x) * (scaledRect.height - scaledRect.y);
 
-        float approx = 1.f;
-        // if (fabs(farea - 0.f) > FLT_EPSILON && fabs(farea - 0.f) > FLT_EPSILON)
-        {
-            const float expected_new_area = farea * relScale * relScale;
-            approx = sarea / expected_new_area;
+        const float expected_new_area = farea * relScale * relScale;
+        float approx = sarea / expected_new_area;
 
-            dprintf(" rel areas %f %f\n", expected_new_area, sarea);
-        }
+        dprintf(" rel areas %f %f\n", expected_new_area, sarea);
 
         // compensation areas rounding
-        float rootThreshold = threshold * approx;
-        rootThreshold *= scaling;
+        float rootThreshold = threshold * approx * scaling;
 
         dprintf("approximation %f %f -> %f %f\n", approx, threshold, rootThreshold, scaling);
 
@@ -715,10 +709,10 @@ bool cv::SoftCascade::load( const string& filename, const float minScale, const
     return true;
 }
 
-// #define DEBUG_SHOW_RESULT
+//#define DEBUG_SHOW_RESULT
 
 void cv::SoftCascade::detectMultiScale(const Mat& image, const std::vector<cv::Rect>& /*rois*/,
-                                       std::vector<cv::Rect>& objects, const int /*rejectfactor*/)
+                                       std::vector<cv::Rect>& objects, const int /*rejectfactor*/) const
 {
     typedef std::vector<cv::Rect>::const_iterator RIter_t;
     // only color images are supperted