Skip to content

Commit b4be860

Browse files
fix unit test which replicates the norm logic
fix test
1 parent 1ac12ae commit b4be860

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

modules/imgproc/test/test_templmatch.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -292,12 +292,12 @@ static void cvTsMatchTemplate( const CvMat* img, const CvMat* templ, CvMat* resu
292292
denom += a_sum2.val[2] - (a_sum.val[2]*a_sum.val[2])/area;
293293
}
294294
denom = sqrt(MAX(denom,0))*b_denom;
295-
if( fabs(value) < denom )
295+
if( fabs(value) < denom || method == CV_TM_SQDIFF_NORMED)
296296
value /= denom;
297297
else if( fabs(value) < denom*1.125 )
298298
value = value > 0 ? 1 : -1;
299299
else
300-
value = method != CV_TM_SQDIFF_NORMED ? 0 : 1;
300+
value = 0;
301301
}
302302

303303
((float*)(result->data.ptr + result->step*i))[j] = (float)value;
@@ -436,15 +436,15 @@ TEST(Imgproc_MatchTemplate, bug_15215) {
436436

437437
// manually compute sqdiff norm
438438
Scalar squaredDiff = delta.dot(delta);
439-
float sqdiff = squaredDiff.val[0];
439+
double sqdiff = squaredDiff.val[0];
440440
Scalar sumOfSquaredProduct = cv::sum(cvimg.mul(cvimg)) * cv::sum(cvtmpl.mul(cvtmpl));
441441
double norm_ = cv::sqrt(sumOfSquaredProduct.val[0]);
442-
float expectedResult = sqdiff / (float) norm_;
442+
double expectedResult = sqdiff / (float) norm_;
443443

444444
// compute with matchTemplate
445445
cv::Mat output;
446446
cv::matchTemplate(cvimg, cvtmpl, output, CV_TM_SQDIFF_NORMED);
447-
float actualResult = output.at<float>(0, 0);
447+
double actualResult = output.at<float>(0, 0);
448448
ASSERT_FLOAT_EQ(actualResult, expectedResult);
449449
}
450450
} // namespace

0 commit comments

Comments
 (0)