From 39d6eb73128333bb4f6739d44123e353e188be4b Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Tue, 9 Oct 2012 19:13:57 +0400 Subject: [PATCH] Add sanity check support for vector --- modules/ts/include/opencv2/ts/ts_perf.hpp | 2 ++ modules/ts/src/ts_perf.cpp | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/modules/ts/include/opencv2/ts/ts_perf.hpp b/modules/ts/include/opencv2/ts/ts_perf.hpp index 81d2235d51..909a346253 100644 --- a/modules/ts/include/opencv2/ts/ts_perf.hpp +++ b/modules/ts/include/opencv2/ts/ts_perf.hpp @@ -167,6 +167,7 @@ class CV_EXPORTS Regression public: static Regression& add(TestBase* test, const std::string& name, cv::InputArray array, double eps = DBL_EPSILON, ERROR_TYPE err = ERROR_ABSOLUTE); static Regression& addKeypoints(TestBase* test, const std::string& name, const std::vector& array, double eps = DBL_EPSILON, ERROR_TYPE err = ERROR_ABSOLUTE); + static Regression& addMatches(TestBase* test, const std::string& name, const std::vector& array, double eps = DBL_EPSILON, ERROR_TYPE err = ERROR_ABSOLUTE); static void Init(const std::string& testSuitName, const std::string& ext = ".xml"); Regression& operator() (const std::string& name, cv::InputArray array, double eps = DBL_EPSILON, ERROR_TYPE err = ERROR_ABSOLUTE); @@ -202,6 +203,7 @@ private: #define SANITY_CHECK(array, ...) ::perf::Regression::add(this, #array, array , ## __VA_ARGS__) #define SANITY_CHECK_KEYPOINTS(array, ...) ::perf::Regression::addKeypoints(this, #array, array , ## __VA_ARGS__) +#define SANITY_CHECK_MATCHES(array, ...) ::perf::Regression::addMatches(this, #array, array , ## __VA_ARGS__) /*****************************************************************************************\ diff --git a/modules/ts/src/ts_perf.cpp b/modules/ts/src/ts_perf.cpp index 24b91f0185..626459b841 100644 --- a/modules/ts/src/ts_perf.cpp +++ b/modules/ts/src/ts_perf.cpp @@ -121,6 +121,20 @@ Regression& Regression::addKeypoints(TestBase* test, const std::string& name, co (name + "-class_id", class_id, eps, ERROR_ABSOLUTE); } +Regression& Regression::addMatches(TestBase* test, const std::string& name, const std::vector& array, double eps, ERROR_TYPE err) +{ + int len = (int)array.size(); + cv::Mat queryIdx(len, 1, CV_32SC1, (void*)&array[0].queryIdx, sizeof(cv::DMatch)); + cv::Mat trainIdx(len, 1, CV_32SC1, (void*)&array[0].trainIdx, sizeof(cv::DMatch)); + cv::Mat imgIdx (len, 1, CV_32SC1, (void*)&array[0].imgIdx, sizeof(cv::DMatch)); + cv::Mat distance(len, 1, CV_32FC1, (void*)&array[0].distance, sizeof(cv::DMatch)); + + return Regression::add(test, name + "-queryIdx", queryIdx, DBL_EPSILON, ERROR_ABSOLUTE) + (name + "-trainIdx", trainIdx, DBL_EPSILON, ERROR_ABSOLUTE) + (name + "-imgIdx", imgIdx, DBL_EPSILON, ERROR_ABSOLUTE) + (name + "-distance", distance, eps, err); +} + void Regression::Init(const std::string& testSuitName, const std::string& ext) { instance().init(testSuitName, ext); -- GitLab