summaryrefslogtreecommitdiff
path: root/2.3-1/thirdparty/raspberrypi/includes/opencv2/ts/ts_perf.hpp
diff options
context:
space:
mode:
Diffstat (limited to '2.3-1/thirdparty/raspberrypi/includes/opencv2/ts/ts_perf.hpp')
-rw-r--r--2.3-1/thirdparty/raspberrypi/includes/opencv2/ts/ts_perf.hpp618
1 files changed, 0 insertions, 618 deletions
diff --git a/2.3-1/thirdparty/raspberrypi/includes/opencv2/ts/ts_perf.hpp b/2.3-1/thirdparty/raspberrypi/includes/opencv2/ts/ts_perf.hpp
deleted file mode 100644
index 18309061..00000000
--- a/2.3-1/thirdparty/raspberrypi/includes/opencv2/ts/ts_perf.hpp
+++ /dev/null
@@ -1,618 +0,0 @@
-/*M///////////////////////////////////////////////////////////////////////////////////////
-//
-// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
-//
-// By downloading, copying, installing or using the software you agree to this license.
-// If you do not agree to this license, do not download, install,
-// copy or use the software.
-//
-//
-// License Agreement
-// For Open Source Computer Vision Library
-//
-// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
-// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
-// Third party copyrights are property of their respective owners.
-//
-// Redistribution and use in source and binary forms, with or without modification,
-// are permitted provided that the following conditions are met:
-//
-// * Redistribution's of source code must retain the above copyright notice,
-// this list of conditions and the following disclaimer.
-//
-// * Redistribution's in binary form must reproduce the above copyright notice,
-// this list of conditions and the following disclaimer in the documentation
-// and/or other materials provided with the distribution.
-//
-// * The name of the copyright holders may not be used to endorse or promote products
-// derived from this software without specific prior written permission.
-//
-// This software is provided by the copyright holders and contributors "as is" and
-// any express or implied warranties, including, but not limited to, the implied
-// warranties of merchantability and fitness for a particular purpose are disclaimed.
-// In no event shall the Intel Corporation or contributors be liable for any direct,
-// indirect, incidental, special, exemplary, or consequential damages
-// (including, but not limited to, procurement of substitute goods or services;
-// loss of use, data, or profits; or business interruption) however caused
-// and on any theory of liability, whether in contract, strict liability,
-// or tort (including negligence or otherwise) arising in any way out of
-// the use of this software, even if advised of the possibility of such damage.
-//
-//M*/
-
-#ifndef __OPENCV_TS_PERF_HPP__
-#define __OPENCV_TS_PERF_HPP__
-
-#include "opencv2/core/core.hpp"
-#include "opencv2/imgproc/imgproc.hpp"
-#include "opencv2/features2d/features2d.hpp"
-#include "ts_gtest.h"
-
-#ifdef HAVE_TBB
-#include "tbb/task_scheduler_init.h"
-#endif
-
-#if !(defined(LOGD) || defined(LOGI) || defined(LOGW) || defined(LOGE))
-# if defined(ANDROID) && defined(USE_ANDROID_LOGGING)
-# include <android/log.h>
-
-# define PERF_TESTS_LOG_TAG "OpenCV_perf"
-# define LOGD(...) ((void)__android_log_print(ANDROID_LOG_DEBUG, PERF_TESTS_LOG_TAG, __VA_ARGS__))
-# define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, PERF_TESTS_LOG_TAG, __VA_ARGS__))
-# define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, PERF_TESTS_LOG_TAG, __VA_ARGS__))
-# define LOGE(...) ((void)__android_log_print(ANDROID_LOG_ERROR, PERF_TESTS_LOG_TAG, __VA_ARGS__))
-# else
-# define LOGD(_str, ...) do{printf(_str , ## __VA_ARGS__); printf("\n");fflush(stdout);} while(0)
-# define LOGI(_str, ...) do{printf(_str , ## __VA_ARGS__); printf("\n");fflush(stdout);} while(0)
-# define LOGW(_str, ...) do{printf(_str , ## __VA_ARGS__); printf("\n");fflush(stdout);} while(0)
-# define LOGE(_str, ...) do{printf(_str , ## __VA_ARGS__); printf("\n");fflush(stdout);} while(0)
-# endif
-#endif
-
-// declare major namespaces to avoid errors on unknown namespace
-namespace cv { namespace gpu {} namespace ocl {} }
-
-namespace perf
-{
-class TestBase;
-
-/*****************************************************************************************\
-* Predefined typical frame sizes and typical test parameters *
-\*****************************************************************************************/
-const cv::Size szQVGA = cv::Size(320, 240);
-const cv::Size szVGA = cv::Size(640, 480);
-const cv::Size szSVGA = cv::Size(800, 600);
-const cv::Size szXGA = cv::Size(1024, 768);
-const cv::Size szSXGA = cv::Size(1280, 1024);
-const cv::Size szWQHD = cv::Size(2560, 1440);
-
-const cv::Size sznHD = cv::Size(640, 360);
-const cv::Size szqHD = cv::Size(960, 540);
-const cv::Size sz240p = szQVGA;
-const cv::Size sz720p = cv::Size(1280, 720);
-const cv::Size sz1080p = cv::Size(1920, 1080);
-const cv::Size sz1440p = szWQHD;
-const cv::Size sz2160p = cv::Size(3840, 2160);//UHDTV1 4K
-const cv::Size sz4320p = cv::Size(7680, 4320);//UHDTV2 8K
-
-const cv::Size sz3MP = cv::Size(2048, 1536);
-const cv::Size sz5MP = cv::Size(2592, 1944);
-const cv::Size sz2K = cv::Size(2048, 2048);
-
-const cv::Size szODD = cv::Size(127, 61);
-
-const cv::Size szSmall24 = cv::Size(24, 24);
-const cv::Size szSmall32 = cv::Size(32, 32);
-const cv::Size szSmall64 = cv::Size(64, 64);
-const cv::Size szSmall128 = cv::Size(128, 128);
-
-#define SZ_ALL_VGA ::testing::Values(::perf::szQVGA, ::perf::szVGA, ::perf::szSVGA)
-#define SZ_ALL_GA ::testing::Values(::perf::szQVGA, ::perf::szVGA, ::perf::szSVGA, ::perf::szXGA, ::perf::szSXGA)
-#define SZ_ALL_HD ::testing::Values(::perf::sznHD, ::perf::szqHD, ::perf::sz720p, ::perf::sz1080p)
-#define SZ_ALL_SMALL ::testing::Values(::perf::szSmall24, ::perf::szSmall32, ::perf::szSmall64, ::perf::szSmall128)
-#define SZ_ALL ::testing::Values(::perf::szQVGA, ::perf::szVGA, ::perf::szSVGA, ::perf::szXGA, ::perf::szSXGA, ::perf::sznHD, ::perf::szqHD, ::perf::sz720p, ::perf::sz1080p)
-#define SZ_TYPICAL ::testing::Values(::perf::szVGA, ::perf::szqHD, ::perf::sz720p, ::perf::szODD)
-
-
-#define TYPICAL_MAT_SIZES ::perf::szVGA, ::perf::sz720p, ::perf::sz1080p, ::perf::szODD
-#define TYPICAL_MAT_TYPES CV_8UC1, CV_8UC4, CV_32FC1
-#define TYPICAL_MATS testing::Combine( testing::Values( TYPICAL_MAT_SIZES ), testing::Values( TYPICAL_MAT_TYPES ) )
-#define TYPICAL_MATS_C1 testing::Combine( testing::Values( TYPICAL_MAT_SIZES ), testing::Values( CV_8UC1, CV_32FC1 ) )
-#define TYPICAL_MATS_C4 testing::Combine( testing::Values( TYPICAL_MAT_SIZES ), testing::Values( CV_8UC4 ) )
-
-
-/*****************************************************************************************\
-* MatType - printable wrapper over integer 'type' of Mat *
-\*****************************************************************************************/
-class MatType
-{
-public:
- MatType(int val=0) : _type(val) {}
- operator int() const {return _type;}
-
-private:
- int _type;
-};
-
-/*****************************************************************************************\
-* CV_ENUM and CV_FLAGS - macro to create printable wrappers for defines and enums *
-\*****************************************************************************************/
-
-#define CV_ENUM(class_name, ...) \
- namespace { \
- struct class_name { \
- class_name(int val = 0) : val_(val) {} \
- operator int() const { return val_; } \
- void PrintTo(std::ostream* os) const { \
- using namespace cv;using namespace cv::gpu; using namespace cv::ocl; \
- const int vals[] = { __VA_ARGS__ }; \
- const char* svals = #__VA_ARGS__; \
- for(int i = 0, pos = 0; i < (int)(sizeof(vals)/sizeof(int)); ++i) { \
- while(isspace(svals[pos]) || svals[pos] == ',') ++pos; \
- int start = pos; \
- while(!(isspace(svals[pos]) || svals[pos] == ',' || svals[pos] == 0)) \
- ++pos; \
- if (val_ == vals[i]) { \
- *os << std::string(svals + start, svals + pos); \
- return; \
- } \
- } \
- *os << "UNKNOWN"; \
- } \
- static ::testing::internal::ParamGenerator<class_name> all() { \
- using namespace cv;using namespace cv::gpu; using namespace cv::ocl; \
- static class_name vals[] = { __VA_ARGS__ }; \
- return ::testing::ValuesIn(vals); \
- } \
- private: int val_; \
- }; \
- inline void PrintTo(const class_name& t, std::ostream* os) { t.PrintTo(os); } }
-
-#define CV_FLAGS(class_name, ...) \
- namespace { \
- struct class_name { \
- class_name(int val = 0) : val_(val) {} \
- operator int() const { return val_; } \
- void PrintTo(std::ostream* os) const { \
- using namespace cv;using namespace cv::gpu; using namespace cv::ocl; \
- const int vals[] = { __VA_ARGS__ }; \
- const char* svals = #__VA_ARGS__; \
- int value = val_; \
- bool first = true; \
- for(int i = 0, pos = 0; i < (int)(sizeof(vals)/sizeof(int)); ++i) { \
- while(isspace(svals[pos]) || svals[pos] == ',') ++pos; \
- int start = pos; \
- while(!(isspace(svals[pos]) || svals[pos] == ',' || svals[pos] == 0)) \
- ++pos; \
- if ((value & vals[i]) == vals[i]) { \
- value &= ~vals[i]; \
- if (first) first = false; else *os << "|"; \
- *os << std::string(svals + start, svals + pos); \
- if (!value) return; \
- } \
- } \
- if (first) *os << "UNKNOWN"; \
- } \
- private: int val_; \
- }; \
- inline void PrintTo(const class_name& t, std::ostream* os) { t.PrintTo(os); } }
-
-CV_ENUM(MatDepth, CV_8U, CV_8S, CV_16U, CV_16S, CV_32S, CV_32F, CV_64F, CV_USRTYPE1)
-
-/*****************************************************************************************\
-* Regression control utility for performance testing *
-\*****************************************************************************************/
-enum ERROR_TYPE
-{
- ERROR_ABSOLUTE = 0,
- ERROR_RELATIVE = 1
-};
-
-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<cv::KeyPoint>& array, double eps = DBL_EPSILON, ERROR_TYPE err = ERROR_ABSOLUTE);
- static Regression& addMatches(TestBase* test, const std::string& name, const std::vector<cv::DMatch>& 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);
-
-private:
- static Regression& instance();
- Regression();
- ~Regression();
-
- Regression(const Regression&);
- Regression& operator=(const Regression&);
-
- cv::RNG regRNG;//own random numbers generator to make collection and verification work identical
- std::string storageInPath;
- std::string storageOutPath;
- cv::FileStorage storageIn;
- cv::FileStorage storageOut;
- cv::FileNode rootIn;
- std::string currentTestNodeName;
- std::string suiteName;
-
- cv::FileStorage& write();
-
- static std::string getCurrentTestNodeName();
- static bool isVector(cv::InputArray a);
- static double getElem(cv::Mat& m, int x, int y, int cn = 0);
-
- void init(const std::string& testSuitName, const std::string& ext);
- void write(cv::InputArray array);
- void write(cv::Mat m);
- void verify(cv::FileNode node, cv::InputArray array, double eps, ERROR_TYPE err);
- void verify(cv::FileNode node, cv::Mat actual, double eps, std::string argname, ERROR_TYPE err);
-};
-
-#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__)
-#define SANITY_CHECK_NOTHING() this->setVerified()
-
-class CV_EXPORTS GpuPerf
-{
-public:
- static bool targetDevice();
-};
-
-#define PERF_RUN_GPU() ::perf::GpuPerf::targetDevice()
-
-/*****************************************************************************************\
-* Container for performance metrics *
-\*****************************************************************************************/
-typedef struct CV_EXPORTS performance_metrics
-{
- size_t bytesIn;
- size_t bytesOut;
- unsigned int samples;
- unsigned int outliers;
- double gmean;
- double gstddev;//stddev for log(time)
- double mean;
- double stddev;
- double median;
- double min;
- double frequency;
- int terminationReason;
-
- enum
- {
- TERM_ITERATIONS = 0,
- TERM_TIME = 1,
- TERM_INTERRUPT = 2,
- TERM_EXCEPTION = 3,
- TERM_SKIP_TEST = 4, // there are some limitations and test should be skipped
- TERM_UNKNOWN = -1
- };
-
- performance_metrics();
- void clear();
-} performance_metrics;
-
-
-/*****************************************************************************************\
-* Strategy for performance measuring *
-\*****************************************************************************************/
-enum PERF_STRATEGY
-{
- PERF_STRATEGY_BASE = 0,
- PERF_STRATEGY_SIMPLE = 1
-};
-
-
-/*****************************************************************************************\
-* Base fixture for performance tests *
-\*****************************************************************************************/
-class CV_EXPORTS TestBase: public ::testing::Test
-{
-public:
- TestBase();
-
- static void Init(int argc, const char* const argv[]);
- static void Init(const std::vector<std::string> & availableImpls,
- int argc, const char* const argv[]);
- static void RecordRunParameters();
- static std::string getDataPath(const std::string& relativePath);
- static std::string getSelectedImpl();
-
- static enum PERF_STRATEGY getPerformanceStrategy();
- static enum PERF_STRATEGY setPerformanceStrategy(enum PERF_STRATEGY strategy);
-
- class PerfSkipTestException: public cv::Exception {};
-
-protected:
- virtual void PerfTestBody() = 0;
-
- virtual void SetUp();
- virtual void TearDown();
-
- void startTimer();
- void stopTimer();
- bool next();
-
- //_declareHelper declare;
-
- enum
- {
- WARMUP_READ,
- WARMUP_WRITE,
- WARMUP_RNG,
- WARMUP_NONE
- };
-
- void reportMetrics(bool toJUnitXML = false);
- static void warmup(cv::InputOutputArray a, int wtype = WARMUP_READ);
-
- performance_metrics& calcMetrics();
- void RunPerfTestBody();
-private:
- typedef std::vector<std::pair<int, cv::Size> > SizeVector;
- typedef std::vector<int64> TimeVector;
-
- SizeVector inputData;
- SizeVector outputData;
- unsigned int getTotalInputSize() const;
- unsigned int getTotalOutputSize() const;
-
- TimeVector times;
- int64 lastTime;
- int64 totalTime;
- int64 timeLimit;
- static int64 timeLimitDefault;
- static unsigned int iterationsLimitDefault;
-
- unsigned int nIters;
- unsigned int currentIter;
- unsigned int runsPerIteration;
-
- performance_metrics metrics;
- void validateMetrics();
-
- static int64 _timeadjustment;
- static int64 _calibrate();
-
- static void warmup_impl(cv::Mat m, int wtype);
- static int getSizeInBytes(cv::InputArray a);
- static cv::Size getSize(cv::InputArray a);
- static void declareArray(SizeVector& sizes, cv::InputOutputArray a, int wtype = 0);
-
- class CV_EXPORTS _declareHelper
- {
- public:
- _declareHelper& in(cv::InputOutputArray a1, int wtype = WARMUP_READ);
- _declareHelper& in(cv::InputOutputArray a1, cv::InputOutputArray a2, int wtype = WARMUP_READ);
- _declareHelper& in(cv::InputOutputArray a1, cv::InputOutputArray a2, cv::InputOutputArray a3, int wtype = WARMUP_READ);
- _declareHelper& in(cv::InputOutputArray a1, cv::InputOutputArray a2, cv::InputOutputArray a3, cv::InputOutputArray a4, int wtype = WARMUP_READ);
-
- _declareHelper& out(cv::InputOutputArray a1, int wtype = WARMUP_WRITE);
- _declareHelper& out(cv::InputOutputArray a1, cv::InputOutputArray a2, int wtype = WARMUP_WRITE);
- _declareHelper& out(cv::InputOutputArray a1, cv::InputOutputArray a2, cv::InputOutputArray a3, int wtype = WARMUP_WRITE);
- _declareHelper& out(cv::InputOutputArray a1, cv::InputOutputArray a2, cv::InputOutputArray a3, cv::InputOutputArray a4, int wtype = WARMUP_WRITE);
-
- _declareHelper& iterations(unsigned int n);
- _declareHelper& time(double timeLimitSecs);
- _declareHelper& tbb_threads(int n = -1);
- _declareHelper& runs(unsigned int runsNumber);
- private:
- TestBase* test;
- _declareHelper(TestBase* t);
- _declareHelper(const _declareHelper&);
- _declareHelper& operator=(const _declareHelper&);
- friend class TestBase;
- };
- friend class _declareHelper;
-
- bool verified;
-
-public:
- _declareHelper declare;
-
- void setVerified() { this->verified = true; }
-};
-
-template<typename T> class TestBaseWithParam: public TestBase, public ::testing::WithParamInterface<T> {};
-
-typedef std::tr1::tuple<cv::Size, MatType> Size_MatType_t;
-typedef TestBaseWithParam<Size_MatType_t> Size_MatType;
-
-/*****************************************************************************************\
-* Print functions for googletest *
-\*****************************************************************************************/
-CV_EXPORTS void PrintTo(const MatType& t, std::ostream* os);
-
-} //namespace perf
-
-namespace cv
-{
-
-CV_EXPORTS void PrintTo(const Size& sz, ::std::ostream* os);
-
-} //namespace cv
-
-
-/*****************************************************************************************\
-* Macro definitions for performance tests *
-\*****************************************************************************************/
-#define PERF_PROXY_NAMESPACE_NAME_(test_case_name, test_name) \
- test_case_name##_##test_name##_perf_namespace_proxy
-
-// Defines a performance test.
-//
-// The first parameter is the name of the test case, and the second
-// parameter is the name of the test within the test case.
-//
-// The user should put his test code between braces after using this
-// macro. Example:
-//
-// PERF_TEST(FooTest, InitializesCorrectly) {
-// Foo foo;
-// EXPECT_TRUE(foo.StatusIsOK());
-// }
-#define PERF_TEST(test_case_name, test_name)\
- namespace PERF_PROXY_NAMESPACE_NAME_(test_case_name, test_name) {\
- class TestBase {/*compile error for this class means that you are trying to use perf::TestBase as a fixture*/};\
- class test_case_name : public ::perf::TestBase {\
- public:\
- test_case_name() {}\
- protected:\
- virtual void PerfTestBody();\
- };\
- TEST_F(test_case_name, test_name){ RunPerfTestBody(); }\
- }\
- void PERF_PROXY_NAMESPACE_NAME_(test_case_name, test_name)::test_case_name::PerfTestBody()
-
-// Defines a performance test that uses a test fixture.
-//
-// The first parameter is the name of the test fixture class, which
-// also doubles as the test case name. The second parameter is the
-// name of the test within the test case.
-//
-// A test fixture class must be declared earlier. The user should put
-// his test code between braces after using this macro. Example:
-//
-// class FooTest : public ::perf::TestBase {
-// protected:
-// virtual void SetUp() { TestBase::SetUp(); b_.AddElement(3); }
-//
-// Foo a_;
-// Foo b_;
-// };
-//
-// PERF_TEST_F(FooTest, InitializesCorrectly) {
-// EXPECT_TRUE(a_.StatusIsOK());
-// }
-//
-// PERF_TEST_F(FooTest, ReturnsElementCountCorrectly) {
-// EXPECT_EQ(0, a_.size());
-// EXPECT_EQ(1, b_.size());
-// }
-#define PERF_TEST_F(fixture, testname) \
- namespace PERF_PROXY_NAMESPACE_NAME_(fixture, testname) {\
- class TestBase {/*compile error for this class means that you are trying to use perf::TestBase as a fixture*/};\
- class fixture : public ::fixture {\
- public:\
- fixture() {}\
- protected:\
- virtual void PerfTestBody();\
- };\
- TEST_F(fixture, testname){ RunPerfTestBody(); }\
- }\
- void PERF_PROXY_NAMESPACE_NAME_(fixture, testname)::fixture::PerfTestBody()
-
-// Defines a parametrized performance test.
-//
-// The first parameter is the name of the test fixture class, which
-// also doubles as the test case name. The second parameter is the
-// name of the test within the test case.
-//
-// The user should put his test code between braces after using this
-// macro. Example:
-//
-// typedef ::perf::TestBaseWithParam<cv::Size> FooTest;
-//
-// PERF_TEST_P(FooTest, DoTestingRight, ::testing::Values(::perf::szVGA, ::perf::sz720p) {
-// cv::Mat b(GetParam(), CV_8U, cv::Scalar(10));
-// cv::Mat a(GetParam(), CV_8U, cv::Scalar(20));
-// cv::Mat c(GetParam(), CV_8U, cv::Scalar(0));
-//
-// declare.in(a, b).out(c).time(0.5);
-//
-// TEST_CYCLE() cv::add(a, b, c);
-//
-// SANITY_CHECK(c);
-// }
-#define PERF_TEST_P(fixture, name, params) \
- class fixture##_##name : public fixture {\
- public:\
- fixture##_##name() {}\
- protected:\
- virtual void PerfTestBody();\
- };\
- TEST_P(fixture##_##name, name /*perf*/){ RunPerfTestBody(); }\
- INSTANTIATE_TEST_CASE_P(/*none*/, fixture##_##name, params);\
- void fixture##_##name::PerfTestBody()
-
-#ifndef __CV_TEST_EXEC_ARGS
-#if defined(_MSC_VER) && (_MSC_VER <= 1400)
-#define __CV_TEST_EXEC_ARGS(...) \
- while (++argc >= (--argc,-1)) {__VA_ARGS__; break;} /*this ugly construction is needed for VS 2005*/
-#else
-#define __CV_TEST_EXEC_ARGS(...) \
- __VA_ARGS__;
-#endif
-#endif
-
-#define CV_PERF_TEST_MAIN_INTERNALS(modulename, impls, ...) \
- ::perf::Regression::Init(#modulename); \
- ::perf::TestBase::Init(std::vector<std::string>(impls, impls + sizeof impls / sizeof *impls), \
- argc, argv); \
- ::testing::InitGoogleTest(&argc, argv); \
- cvtest::printVersionInfo(); \
- ::testing::Test::RecordProperty("cv_module_name", #modulename); \
- ::perf::TestBase::RecordRunParameters(); \
- __CV_TEST_EXEC_ARGS(__VA_ARGS__) \
- return RUN_ALL_TESTS();
-
-// impls must be an array, not a pointer; "plain" should always be one of the implementations
-#define CV_PERF_TEST_MAIN_WITH_IMPLS(modulename, impls, ...) \
-int main(int argc, char **argv)\
-{\
- CV_PERF_TEST_MAIN_INTERNALS(modulename, impls, __VA_ARGS__)\
-}
-
-#define CV_PERF_TEST_MAIN(modulename, ...) \
-int main(int argc, char **argv)\
-{\
- const char * plain_only[] = { "plain" };\
- CV_PERF_TEST_MAIN_INTERNALS(modulename, plain_only, __VA_ARGS__)\
-}
-
-#define TEST_CYCLE_N(n) for(declare.iterations(n); startTimer(), next(); stopTimer())
-#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)
-
-namespace perf
-{
-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;
-
-struct CV_EXPORTS KeypointGreater
-{
- bool operator()(const cv::KeyPoint& kp1, const cv::KeyPoint& kp2) const
- {
- if(kp1.response > kp2.response) return true;
- if(kp1.response < kp2.response) return false;
- if(kp1.size > kp2.size) return true;
- if(kp1.size < kp2.size) return false;
- if(kp1.octave > kp2.octave) return true;
- if(kp1.octave < kp2.octave) return false;
- if(kp1.pt.y < kp2.pt.y) return false;
- if(kp1.pt.y > kp2.pt.y) return true;
- return kp1.pt.x < kp2.pt.x;
- }
-};
-
-} //namespace comparators
-
-void CV_EXPORTS sort(std::vector<cv::KeyPoint>& pts, cv::InputOutputArray descriptors);
-} //namespace perf
-
-#endif //__OPENCV_TS_PERF_HPP__