Add sanity checks to objdetect module perf tests
authorAndrey Kamaev <andrey.kamaev@itseez.com>
Tue, 9 Oct 2012 11:28:10 +0000 (15:28 +0400)
committerAndrey Kamaev <andrey.kamaev@itseez.com>
Tue, 9 Oct 2012 11:28:51 +0000 (15:28 +0400)
modules/objdetect/perf/perf_cascadeclassifier.cpp
modules/ts/include/opencv2/ts/ts_perf.hpp

index eff64fa..df8b5ae 100644 (file)
@@ -38,17 +38,20 @@ PERF_TEST_P(ImageName_MinSize, CascadeClassifierLBPFrontalFace,
     if (img.empty())
         FAIL() << "Can't load source image";
 
-    vector<Rect> res;
+    vector<Rect> faces;
 
     equalizeHist(img, img);
     declare.in(img);
 
     while(next())
     {
-        res.clear();
+        faces.clear();
 
         startTimer();
-        cc.detectMultiScale(img, res, 1.1, 3, 0, minSize);
+        cc.detectMultiScale(img, faces, 1.1, 3, 0, minSize);
         stopTimer();
     }
+
+    std::sort(faces.begin(), faces.end(), comparators::RectLess());
+    SANITY_CHECK(faces);
 }
index 44d98bc..449b434 100644 (file)
@@ -473,10 +473,26 @@ int main(int argc, char **argv)\
 #define TEST_CYCLE() for(; startTimer(), next(); stopTimer())
 #define TEST_CYCLE_MULTIRUN(runsNum) for(declare.runs(runsNum); startTimer(), next(); stopTimer()) for(int r = 0; r < runsNum; ++r)
 
-//flags
 namespace perf
 {
-//GTEST_DECLARE_int32_(allowed_outliers);
+namespace comparators
+{
+
+template<typename T>
+struct CV_EXPORTS RectLess_
+{
+  bool operator()(const cv::Rect_<T>& r1, const cv::Rect_<T>& r2) const
+  {
+    return r1.x < r2.x
+      || (r1.x == r2.x && r1.y < r2.y)
+      || (r1.x == r2.x && r1.y == r2.y && r1.width < r2.width)
+      || (r1.x == r2.x && r1.y == r2.y && r1.width == r2.width && r1.height < r2.height);
+  }
+};
+
+typedef RectLess_<int> RectLess;
+
+} //namespace comparators
 } //namespace perf
 
 #endif //__OPENCV_TS_PERF_HPP__