Path: blob/master/modules/imgproc/perf/perf_accumulate.cpp
16339 views
// This file is part of OpenCV project.1// It is subject to the license terms in the LICENSE file found in the top-level directory2// of this distribution and at http://opencv.org/license.html.3#include "perf_precomp.hpp"45namespace opencv_test {67typedef Size_MatType Accumulate;89#define MAT_TYPES_ACCUMLATE CV_8UC1, CV_16UC1, CV_32FC110#define MAT_TYPES_ACCUMLATE_C MAT_TYPES_ACCUMLATE, CV_8UC3, CV_16UC3, CV_32FC311#define MAT_TYPES_ACCUMLATE_D MAT_TYPES_ACCUMLATE, CV_64FC112#define MAT_TYPES_ACCUMLATE_D_C MAT_TYPES_ACCUMLATE_C, CV_64FC1, CV_64FC11314#define PERF_ACCUMULATE_INIT(_FLTC) \15const Size srcSize = get<0>(GetParam()); \16const int srcType = get<1>(GetParam()); \17const int dstType = _FLTC(CV_MAT_CN(srcType)); \18Mat src1(srcSize, srcType), dst(srcSize, dstType); \19declare.in(src1, dst, WARMUP_RNG).out(dst);2021#define PERF_ACCUMULATE_MASK_INIT(_FLTC) \22PERF_ACCUMULATE_INIT(_FLTC) \23Mat mask(srcSize, CV_8UC1); \24declare.in(mask, WARMUP_RNG);2526#define PERF_TEST_P_ACCUMULATE(_NAME, _TYPES, _INIT, _FUN) \27PERF_TEST_P(Accumulate, _NAME, \28testing::Combine( \29testing::Values(sz1080p, sz720p, szVGA, szQVGA, szODD), \30testing::Values(_TYPES) \31) \32) \33{ \34_INIT \35TEST_CYCLE() _FUN; \36SANITY_CHECK_NOTHING(); \37}3839/////////////////////////////////// Accumulate ///////////////////////////////////4041PERF_TEST_P_ACCUMULATE(Accumulate, MAT_TYPES_ACCUMLATE,42PERF_ACCUMULATE_INIT(CV_32FC), accumulate(src1, dst))4344PERF_TEST_P_ACCUMULATE(AccumulateMask, MAT_TYPES_ACCUMLATE_C,45PERF_ACCUMULATE_MASK_INIT(CV_32FC), accumulate(src1, dst, mask))4647PERF_TEST_P_ACCUMULATE(AccumulateDouble, MAT_TYPES_ACCUMLATE_D,48PERF_ACCUMULATE_INIT(CV_64FC), accumulate(src1, dst))4950PERF_TEST_P_ACCUMULATE(AccumulateDoubleMask, MAT_TYPES_ACCUMLATE_D_C,51PERF_ACCUMULATE_MASK_INIT(CV_64FC), accumulate(src1, dst, mask))5253///////////////////////////// AccumulateSquare ///////////////////////////////////5455PERF_TEST_P_ACCUMULATE(Square, MAT_TYPES_ACCUMLATE,56PERF_ACCUMULATE_INIT(CV_32FC), accumulateSquare(src1, dst))5758PERF_TEST_P_ACCUMULATE(SquareMask, MAT_TYPES_ACCUMLATE_C,59PERF_ACCUMULATE_MASK_INIT(CV_32FC), accumulateSquare(src1, dst, mask))6061PERF_TEST_P_ACCUMULATE(SquareDouble, MAT_TYPES_ACCUMLATE_D,62PERF_ACCUMULATE_INIT(CV_64FC), accumulateSquare(src1, dst))6364PERF_TEST_P_ACCUMULATE(SquareDoubleMask, MAT_TYPES_ACCUMLATE_D_C,65PERF_ACCUMULATE_MASK_INIT(CV_64FC), accumulateSquare(src1, dst, mask))6667///////////////////////////// AccumulateProduct ///////////////////////////////////6869#define PERF_ACCUMULATE_INIT_2(_FLTC) \70PERF_ACCUMULATE_INIT(_FLTC) \71Mat src2(srcSize, srcType); \72declare.in(src2);7374#define PERF_ACCUMULATE_MASK_INIT_2(_FLTC) \75PERF_ACCUMULATE_MASK_INIT(_FLTC) \76Mat src2(srcSize, srcType); \77declare.in(src2);7879PERF_TEST_P_ACCUMULATE(Product, MAT_TYPES_ACCUMLATE,80PERF_ACCUMULATE_INIT_2(CV_32FC), accumulateProduct(src1, src2, dst))8182PERF_TEST_P_ACCUMULATE(ProductMask, MAT_TYPES_ACCUMLATE_C,83PERF_ACCUMULATE_MASK_INIT_2(CV_32FC), accumulateProduct(src1, src2, dst, mask))8485PERF_TEST_P_ACCUMULATE(ProductDouble, MAT_TYPES_ACCUMLATE_D,86PERF_ACCUMULATE_INIT_2(CV_64FC), accumulateProduct(src1, src2, dst))8788PERF_TEST_P_ACCUMULATE(ProductDoubleMask, MAT_TYPES_ACCUMLATE_D_C,89PERF_ACCUMULATE_MASK_INIT_2(CV_64FC), accumulateProduct(src1, src2, dst, mask))9091///////////////////////////// AccumulateWeighted ///////////////////////////////////9293PERF_TEST_P_ACCUMULATE(Weighted, MAT_TYPES_ACCUMLATE,94PERF_ACCUMULATE_INIT(CV_32FC), accumulateWeighted(src1, dst, 0.123))9596PERF_TEST_P_ACCUMULATE(WeightedMask, MAT_TYPES_ACCUMLATE_C,97PERF_ACCUMULATE_MASK_INIT(CV_32FC), accumulateWeighted(src1, dst, 0.123, mask))9899PERF_TEST_P_ACCUMULATE(WeightedDouble, MAT_TYPES_ACCUMLATE_D,100PERF_ACCUMULATE_INIT(CV_64FC), accumulateWeighted(src1, dst, 0.123456))101102PERF_TEST_P_ACCUMULATE(WeightedDoubleMask, MAT_TYPES_ACCUMLATE_D_C,103PERF_ACCUMULATE_MASK_INIT(CV_64FC), accumulateWeighted(src1, dst, 0.123456, mask))104105} // namespace106107108