fixed gpu image resize test
authorAlexey Spizhevoy <no@email>
Wed, 2 Feb 2011 09:58:22 +0000 (09:58 +0000)
committerAlexey Spizhevoy <no@email>
Wed, 2 Feb 2011 09:58:22 +0000 (09:58 +0000)
tests/gpu/src/imgproc_gpu.cpp

index 1de3bd6..e7c2349 100644 (file)
@@ -64,7 +64,8 @@ protected:
 \r
     virtual int test(const Mat& img) = 0;\r
 \r
-    int CheckNorm(const Mat& m1, const Mat& m2);\r
+    int CheckNorm(const Mat& m1, const Mat& m2);  \r
+    int ChechSimilarity(const Mat& m1, const Mat& m2);\r
 };\r
 \r
 \r
@@ -117,6 +118,19 @@ int CV_GpuImageProcTest::CheckNorm(const Mat& m1, const Mat& m2)
     }\r
 }\r
 \r
+int CV_GpuImageProcTest::ChechSimilarity(const Mat& m1, const Mat& m2)\r
+{\r
+    Mat diff;\r
+    cv::matchTemplate(m1, m2, diff, CV_TM_CCORR_NORMED);\r
+\r
+    float err = abs(diff.at<float>(0, 0) - 1.f);\r
+\r
+    if (err > 1e-3f)\r
+        return CvTS::FAIL_INVALID_OUTPUT;\r
+\r
+    return CvTS::OK;\r
+}\r
+\r
 void CV_GpuImageProcTest::run( int )\r
 {\r
     //load image\r
@@ -241,14 +255,21 @@ struct CV_GpuNppImageResizeTest : public CV_GpuImageProcTest
         {\r
             ts->printf(CvTS::LOG, "Interpolation: %s\n", interpolations_str[i]);\r
 \r
-            Mat cpu_res;\r
-            cv::resize(img, cpu_res, Size(), 0.5, 0.5, interpolations[i]);\r
+            Mat cpu_res1, cpu_res2;\r
+            cv::resize(img, cpu_res1, Size(), 2.0, 2.0, interpolations[i]);\r
+            cv::resize(cpu_res1, cpu_res2, Size(), 0.5, 0.5, interpolations[i]);\r
 \r
-            GpuMat gpu1(img), gpu_res;\r
-            cv::gpu::resize(gpu1, gpu_res, Size(), 0.5, 0.5, interpolations[i]);\r
+            GpuMat gpu1(img), gpu_res1, gpu_res2;\r
+            cv::gpu::resize(gpu1, gpu_res1, Size(), 2.0, 2.0, interpolations[i]);\r
+            cv::gpu::resize(gpu_res1, gpu_res2, Size(), 0.5, 0.5, interpolations[i]);\r
 \r
-            if (CheckNorm(cpu_res, gpu_res) != CvTS::OK)\r
-                test_res = CvTS::FAIL_GENERIC;\r
+            switch (img.depth())\r
+            {\r
+            case CV_8U: \r
+                if (ChechSimilarity(cpu_res2, gpu_res2) != CvTS::OK)\r
+                    test_res = CvTS::FAIL_GENERIC;\r
+                break;\r
+            }\r
         }\r
 \r
         return test_res;\r