Commit 9ca45dab authored by Vadim Pisarevsky's avatar Vadim Pisarevsky

fixed couple of integral-related bugs

parent 8da63785
...@@ -214,7 +214,7 @@ void integral_##suffix( T* src, size_t srcstep, ST* sum, size_t sumstep, QT* sqs ...@@ -214,7 +214,7 @@ void integral_##suffix( T* src, size_t srcstep, ST* sum, size_t sumstep, QT* sqs
DEF_INTEGRAL_FUNC(8u32s, uchar, int, double) DEF_INTEGRAL_FUNC(8u32s, uchar, int, double)
DEF_INTEGRAL_FUNC(8u32f, uchar, float, double) DEF_INTEGRAL_FUNC(8u32f, uchar, float, double)
DEF_INTEGRAL_FUNC(8u64f, uchar, double, double) DEF_INTEGRAL_FUNC(8u64f, uchar, double, double)
DEF_INTEGRAL_FUNC(32f, float, float, float) DEF_INTEGRAL_FUNC(32f, float, float, double)
DEF_INTEGRAL_FUNC(32f64f, float, double, double) DEF_INTEGRAL_FUNC(32f64f, float, double, double)
DEF_INTEGRAL_FUNC(64f, double, double, double) DEF_INTEGRAL_FUNC(64f, double, double, double)
......
...@@ -1576,7 +1576,7 @@ CV_IntegralTest::CV_IntegralTest() ...@@ -1576,7 +1576,7 @@ CV_IntegralTest::CV_IntegralTest()
test_array[REF_OUTPUT].push_back(NULL); test_array[REF_OUTPUT].push_back(NULL);
test_array[REF_OUTPUT].push_back(NULL); test_array[REF_OUTPUT].push_back(NULL);
test_array[REF_OUTPUT].push_back(NULL); test_array[REF_OUTPUT].push_back(NULL);
element_wise_relative_error = false; element_wise_relative_error = true;
} }
...@@ -1603,7 +1603,8 @@ void CV_IntegralTest::get_test_array_types_and_sizes( int test_case_idx, ...@@ -1603,7 +1603,8 @@ void CV_IntegralTest::get_test_array_types_and_sizes( int test_case_idx,
depth = depth == 0 ? CV_8U : CV_32F; depth = depth == 0 ? CV_8U : CV_32F;
cn += cn == 2; cn += cn == 2;
sum_depth = depth == CV_8U && (cvtest::randInt(rng) & 1) == 1 ? CV_32S : CV_64F; int b = (cvtest::randInt(rng) & 1) != 0;
sum_depth = depth == CV_8U && b ? CV_32S : b ? CV_32F : CV_64F;
types[INPUT][0] = CV_MAKETYPE(depth,cn); types[INPUT][0] = CV_MAKETYPE(depth,cn);
types[OUTPUT][0] = types[REF_OUTPUT][0] = types[OUTPUT][0] = types[REF_OUTPUT][0] =
...@@ -1626,10 +1627,10 @@ void CV_IntegralTest::get_test_array_types_and_sizes( int test_case_idx, ...@@ -1626,10 +1627,10 @@ void CV_IntegralTest::get_test_array_types_and_sizes( int test_case_idx,
} }
double CV_IntegralTest::get_success_error_level( int /*test_case_idx*/, int i, int j ) double CV_IntegralTest::get_success_error_level( int, int i, int j )
{ {
int depth = test_mat[i][j].depth(); int depth = test_mat[i][j].depth();
return depth == CV_32S ? 0 : FLT_EPSILON; return depth == CV_32S ? 0 : depth == CV_64F ? FLT_EPSILON : 5e-3;
} }
......
...@@ -622,7 +622,7 @@ bool HaarEvaluator::setImage( const Mat &image, Size _origWinSize ) ...@@ -622,7 +622,7 @@ bool HaarEvaluator::setImage( const Mat &image, Size _origWinSize )
tilted0.create( rn, cn, CV_32S); tilted0.create( rn, cn, CV_32S);
} }
sum = Mat(rn, cn, CV_32S, sum0.data); sum = Mat(rn, cn, CV_32S, sum0.data);
sqsum = Mat(rn, cn, CV_32S, sqsum0.data); sqsum = Mat(rn, cn, CV_64F, sqsum0.data);
if( hasTiltedFeatures ) if( hasTiltedFeatures )
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment