diff --git a/modules/gpu/test/test_imgproc.cpp b/modules/gpu/test/test_imgproc.cpp index d177334f0a..575f45c2a2 100644 --- a/modules/gpu/test/test_imgproc.cpp +++ b/modules/gpu/test/test_imgproc.cpp @@ -2041,4 +2041,82 @@ INSTANTIATE_TEST_CASE_P(ImgProc, Blend, testing::Combine( testing::Values(CV_8U, CV_32F), testing::Range(1, 5))); +//////////////////////////////////////////////////////// +// pyrDown + +struct PyrDown : testing::TestWithParam +{ + cv::gpu::DeviceInfo devInfo; + + virtual void SetUp() + { + devInfo = GetParam(); + cv::gpu::setDevice(devInfo.deviceID()); + } +}; + +TEST_P(PyrDown, Accuracy) +{ + PRINT_PARAM(devInfo); + + cv::Mat src; + readImage("stereobm/aloe-L.png").convertTo(src, CV_16S); + + cv::Mat dst_gold; + cv::pyrDown(src, dst_gold); + + cv::gpu::GpuMat d_dst; + cv::gpu::pyrDown(cv::gpu::GpuMat(src), d_dst); + cv::Mat dst_mine = d_dst; + + ASSERT_EQ(dst_gold.cols, dst_mine.cols); + ASSERT_EQ(dst_gold.rows, dst_mine.rows); + ASSERT_EQ(dst_gold.type(), dst_mine.type()); + + double err = cvtest::crossCorr(dst_gold, dst_mine) / + (cv::norm(dst_gold,cv::NORM_L2)*cv::norm(dst_mine,cv::NORM_L2)); + ASSERT_NEAR(err, 1., 1e-2); +} + +INSTANTIATE_TEST_CASE_P(ImgProc, PyrDown, testing::ValuesIn(devices())); + +//////////////////////////////////////////////////////// +// pyrUp + +struct PyrUp: testing::TestWithParam +{ + cv::gpu::DeviceInfo devInfo; + + virtual void SetUp() + { + devInfo = GetParam(); + cv::gpu::setDevice(devInfo.deviceID()); + } +}; + +TEST_P(PyrUp, Accuracy) +{ + PRINT_PARAM(devInfo); + + cv::Mat src; + readImage("stereobm/aloe-L.png").convertTo(src, CV_16S); + + cv::Mat dst_gold; + cv::pyrUp(src, dst_gold); + + cv::gpu::GpuMat d_dst; + cv::gpu::pyrUp(cv::gpu::GpuMat(src), d_dst); + cv::Mat dst_mine = d_dst; + + ASSERT_EQ(dst_gold.cols, dst_mine.cols); + ASSERT_EQ(dst_gold.rows, dst_mine.rows); + ASSERT_EQ(dst_gold.type(), dst_mine.type()); + + double err = cvtest::crossCorr(dst_gold, dst_mine) / + (cv::norm(dst_gold,cv::NORM_L2)*cv::norm(dst_mine,cv::NORM_L2)); + ASSERT_NEAR(err, 1., 1e-2); +} + +INSTANTIATE_TEST_CASE_P(ImgProc, PyrUp, testing::ValuesIn(devices())); + #endif // HAVE_CUDA