test: extract OpenCL Moments tests, drop 'coi' parameter

pull/9995/head
Alexander Alekhin 7 years ago
parent c9c759f700
commit 47ae5197a9
  1. 41
      modules/imgproc/test/test_moments.cpp

@ -39,6 +39,7 @@
//
//M*/
#include "test_precomp.hpp"
#include "opencv2/ts/ocl_test.hpp"
using namespace cv;
using namespace std;
@ -54,7 +55,7 @@ using namespace std;
class CV_MomentsTest : public cvtest::ArrayTest
{
public:
CV_MomentsTest();
CV_MomentsTest(bool try_umat);
protected:
@ -65,18 +66,17 @@ protected:
void get_minmax_bounds( int i, int j, int type, Scalar& low, Scalar& high );
double get_success_error_level( int test_case_idx, int i, int j );
void run_func();
int coi;
bool is_binary;
bool try_umat;
bool try_umat_;
};
CV_MomentsTest::CV_MomentsTest()
CV_MomentsTest::CV_MomentsTest(bool try_umat) :
try_umat_(try_umat)
{
test_array[INPUT].push_back(NULL);
test_array[OUTPUT].push_back(NULL);
test_array[REF_OUTPUT].push_back(NULL);
coi = -1;
is_binary = false;
OCL_TUNING_MODE_ONLY(test_case_count = 10);
//element_wise_relative_error = false;
@ -110,40 +110,24 @@ void CV_MomentsTest::get_test_array_types_and_sizes( int test_case_idx,
{
RNG& rng = ts->get_rng();
cvtest::ArrayTest::get_test_array_types_and_sizes( test_case_idx, sizes, types );
int cn = (cvtest::randInt(rng) % 4) + 1;
int depth = cvtest::randInt(rng) % 4;
depth = depth == 0 ? CV_8U : depth == 1 ? CV_16U : depth == 2 ? CV_16S : CV_32F;
is_binary = cvtest::randInt(rng) % 2 != 0;
if( depth == 0 && !is_binary )
try_umat = cvtest::randInt(rng) % 5 != 0;
else
try_umat = cvtest::randInt(rng) % 2 != 0;
if( cn == 2 || try_umat )
cn = 1;
OCL_TUNING_MODE_ONLY(
cn = 1;
depth = CV_8U;
try_umat = true;
is_binary = false;
sizes[INPUT][0] = Size(1024,768)
);
types[INPUT][0] = CV_MAKETYPE(depth, cn);
types[INPUT][0] = CV_MAKETYPE(depth, 1);
types[OUTPUT][0] = types[REF_OUTPUT][0] = CV_64FC1;
sizes[OUTPUT][0] = sizes[REF_OUTPUT][0] = cvSize(MOMENT_COUNT,1);
if(CV_MAT_DEPTH(types[INPUT][0])>=CV_32S)
sizes[INPUT][0].width = MAX(sizes[INPUT][0].width, 3);
coi = 0;
cvmat_allowed = true;
if( cn > 1 )
{
coi = cvtest::randInt(rng) % cn;
cvmat_allowed = false;
}
}
@ -156,13 +140,6 @@ double CV_MomentsTest::get_success_error_level( int /*test_case_idx*/, int /*i*/
int CV_MomentsTest::prepare_test_case( int test_case_idx )
{
int code = cvtest::ArrayTest::prepare_test_case( test_case_idx );
if( code > 0 )
{
int cn = test_mat[INPUT][0].channels();
if( cn > 1 )
cvSetImageCOI( (IplImage*)test_array[INPUT][0], coi + 1 );
}
return code;
}
@ -171,7 +148,7 @@ void CV_MomentsTest::run_func()
{
CvMoments* m = (CvMoments*)test_mat[OUTPUT][0].ptr<double>();
double* others = (double*)(m + 1);
if( try_umat )
if (try_umat_)
{
UMat u;
test_mat[INPUT][0].clone().copyTo(u);
@ -212,6 +189,7 @@ void CV_MomentsTest::prepare_to_validation( int /*test_case_idx*/ )
memset( &m, 0, sizeof(m));
int coi = 0;
for( y = 0; y < src.rows; y++ )
{
double s0 = 0, s1 = 0, s2 = 0, s3 = 0;
@ -431,7 +409,8 @@ void CV_HuMomentsTest::prepare_to_validation( int /*test_case_idx*/ )
}
TEST(Imgproc_Moments, accuracy) { CV_MomentsTest test; test.safe_run(); }
TEST(Imgproc_Moments, accuracy) { CV_MomentsTest test(false); test.safe_run(); }
OCL_TEST(Imgproc_Moments, accuracy) { CV_MomentsTest test(true); test.safe_run(); }
TEST(Imgproc_HuMoments, accuracy) { CV_HuMomentsTest test; test.safe_run(); }
class CV_SmallContourMomentTest : public cvtest::BaseTest

Loading…
Cancel
Save