diff --git a/modules/calib3d/test/test_stereomatching.cpp b/modules/calib3d/test/test_stereomatching.cpp index 2be50a0170..b715d48f5a 100644 --- a/modules/calib3d/test/test_stereomatching.cpp +++ b/modules/calib3d/test/test_stereomatching.cpp @@ -530,7 +530,8 @@ int CV_StereoMatchingTest::processStereoMatchingResults( FileStorage& fs, int ca // rightDisp is not used in current test virsion int code = cvtest::TS::OK; assert( fs.isOpened() ); - assert( trueLeftDisp.type() == CV_32FC1 && trueRightDisp.type() == CV_32FC1 ); + assert( trueLeftDisp.type() == CV_32FC1 ); + assert( trueRightDisp.empty() || trueRightDisp.type() == CV_32FC1 ); assert( leftDisp.type() == CV_32FC1 && rightDisp.type() == CV_32FC1 ); // get masks for unknown ground truth disparity values diff --git a/modules/nonfree/src/surf_gpu.cpp b/modules/nonfree/src/surf_gpu.cpp index eabbd78b4c..bfc7e700f9 100644 --- a/modules/nonfree/src/surf_gpu.cpp +++ b/modules/nonfree/src/surf_gpu.cpp @@ -223,6 +223,9 @@ namespace } private: + SURF_GPU_Invoker(const SURF_GPU_Invoker&); + SURF_GPU_Invoker& operator =(const SURF_GPU_Invoker&); + SURF_GPU& surf_; int img_cols, img_rows; diff --git a/modules/nonfree/test/test_gpu.cpp b/modules/nonfree/test/test_gpu.cpp index ece82f316e..30aec352cd 100644 --- a/modules/nonfree/test/test_gpu.cpp +++ b/modules/nonfree/test/test_gpu.cpp @@ -58,9 +58,8 @@ namespace IMPLEMENT_PARAM_CLASS(SURF_Upright, bool) } -PARAM_TEST_CASE(SURF, cv::gpu::DeviceInfo, SURF_HessianThreshold, SURF_Octaves, SURF_OctaveLayers, SURF_Extended, SURF_Upright) +PARAM_TEST_CASE(SURF, SURF_HessianThreshold, SURF_Octaves, SURF_OctaveLayers, SURF_Extended, SURF_Upright) { - cv::gpu::DeviceInfo devInfo; double hessianThreshold; int nOctaves; int nOctaveLayers; @@ -69,14 +68,11 @@ PARAM_TEST_CASE(SURF, cv::gpu::DeviceInfo, SURF_HessianThreshold, SURF_Octaves, virtual void SetUp() { - devInfo = GET_PARAM(0); - hessianThreshold = GET_PARAM(1); - nOctaves = GET_PARAM(2); - nOctaveLayers = GET_PARAM(3); - extended = GET_PARAM(4); - upright = GET_PARAM(5); - - cv::gpu::setDevice(devInfo.deviceID()); + hessianThreshold = GET_PARAM(0); + nOctaves = GET_PARAM(1); + nOctaveLayers = GET_PARAM(2); + extended = GET_PARAM(3); + upright = GET_PARAM(4); } }; @@ -93,39 +89,24 @@ GPU_TEST_P(SURF, Detector) surf.upright = upright; surf.keypointsRatio = 0.05f; - if (!supportFeature(devInfo, cv::gpu::GLOBAL_ATOMICS)) - { - try - { - std::vector keypoints; - surf(loadMat(image), cv::gpu::GpuMat(), keypoints); - } - catch (const cv::Exception& e) - { - ASSERT_EQ(CV_StsNotImplemented, e.code); - } - } - else - { - std::vector keypoints; - surf(loadMat(image), cv::gpu::GpuMat(), keypoints); + std::vector keypoints; + surf(loadMat(image), cv::gpu::GpuMat(), keypoints); - cv::SURF surf_gold; - surf_gold.hessianThreshold = hessianThreshold; - surf_gold.nOctaves = nOctaves; - surf_gold.nOctaveLayers = nOctaveLayers; - surf_gold.extended = extended; - surf_gold.upright = upright; + cv::SURF surf_gold; + surf_gold.hessianThreshold = hessianThreshold; + surf_gold.nOctaves = nOctaves; + surf_gold.nOctaveLayers = nOctaveLayers; + surf_gold.extended = extended; + surf_gold.upright = upright; - std::vector keypoints_gold; - surf_gold(image, cv::noArray(), keypoints_gold); + std::vector keypoints_gold; + surf_gold(image, cv::noArray(), keypoints_gold); - ASSERT_EQ(keypoints_gold.size(), keypoints.size()); - int matchedCount = getMatchedPointsCount(keypoints_gold, keypoints); - double matchedRatio = static_cast(matchedCount) / keypoints_gold.size(); + ASSERT_EQ(keypoints_gold.size(), keypoints.size()); + int matchedCount = getMatchedPointsCount(keypoints_gold, keypoints); + double matchedRatio = static_cast(matchedCount) / keypoints_gold.size(); - EXPECT_GT(matchedRatio, 0.95); - } + EXPECT_GT(matchedRatio, 0.95); } GPU_TEST_P(SURF, Detector_Masked) @@ -144,39 +125,24 @@ GPU_TEST_P(SURF, Detector_Masked) surf.upright = upright; surf.keypointsRatio = 0.05f; - if (!supportFeature(devInfo, cv::gpu::GLOBAL_ATOMICS)) - { - try - { - std::vector keypoints; - surf(loadMat(image), loadMat(mask), keypoints); - } - catch (const cv::Exception& e) - { - ASSERT_EQ(CV_StsNotImplemented, e.code); - } - } - else - { - std::vector keypoints; - surf(loadMat(image), loadMat(mask), keypoints); + std::vector keypoints; + surf(loadMat(image), loadMat(mask), keypoints); - cv::SURF surf_gold; - surf_gold.hessianThreshold = hessianThreshold; - surf_gold.nOctaves = nOctaves; - surf_gold.nOctaveLayers = nOctaveLayers; - surf_gold.extended = extended; - surf_gold.upright = upright; + cv::SURF surf_gold; + surf_gold.hessianThreshold = hessianThreshold; + surf_gold.nOctaves = nOctaves; + surf_gold.nOctaveLayers = nOctaveLayers; + surf_gold.extended = extended; + surf_gold.upright = upright; - std::vector keypoints_gold; - surf_gold(image, mask, keypoints_gold); + std::vector keypoints_gold; + surf_gold(image, mask, keypoints_gold); - ASSERT_EQ(keypoints_gold.size(), keypoints.size()); - int matchedCount = getMatchedPointsCount(keypoints_gold, keypoints); - double matchedRatio = static_cast(matchedCount) / keypoints_gold.size(); + ASSERT_EQ(keypoints_gold.size(), keypoints.size()); + int matchedCount = getMatchedPointsCount(keypoints_gold, keypoints); + double matchedRatio = static_cast(matchedCount) / keypoints_gold.size(); - EXPECT_GT(matchedRatio, 0.95); - } + EXPECT_GT(matchedRatio, 0.95); } GPU_TEST_P(SURF, Descriptor) @@ -199,43 +165,26 @@ GPU_TEST_P(SURF, Descriptor) surf_gold.extended = extended; surf_gold.upright = upright; - if (!supportFeature(devInfo, cv::gpu::GLOBAL_ATOMICS)) - { - try - { - std::vector keypoints; - cv::gpu::GpuMat descriptors; - surf(loadMat(image), cv::gpu::GpuMat(), keypoints, descriptors); - } - catch (const cv::Exception& e) - { - ASSERT_EQ(CV_StsNotImplemented, e.code); - } - } - else - { - std::vector keypoints; - surf_gold(image, cv::noArray(), keypoints); + std::vector keypoints; + surf_gold(image, cv::noArray(), keypoints); - cv::gpu::GpuMat descriptors; - surf(loadMat(image), cv::gpu::GpuMat(), keypoints, descriptors, true); + cv::gpu::GpuMat descriptors; + surf(loadMat(image), cv::gpu::GpuMat(), keypoints, descriptors, true); - cv::Mat descriptors_gold; - surf_gold(image, cv::noArray(), keypoints, descriptors_gold, true); + cv::Mat descriptors_gold; + surf_gold(image, cv::noArray(), keypoints, descriptors_gold, true); - cv::BFMatcher matcher(cv::NORM_L2); - std::vector matches; - matcher.match(descriptors_gold, cv::Mat(descriptors), matches); + cv::BFMatcher matcher(cv::NORM_L2); + std::vector matches; + matcher.match(descriptors_gold, cv::Mat(descriptors), matches); - int matchedCount = getMatchedPointsCount(keypoints, keypoints, matches); - double matchedRatio = static_cast(matchedCount) / keypoints.size(); + int matchedCount = getMatchedPointsCount(keypoints, keypoints, matches); + double matchedRatio = static_cast(matchedCount) / keypoints.size(); - EXPECT_GT(matchedRatio, 0.6); - } + EXPECT_GT(matchedRatio, 0.6); } INSTANTIATE_TEST_CASE_P(GPU_Features2D, SURF, testing::Combine( - ALL_DEVICES, testing::Values(SURF_HessianThreshold(100.0), SURF_HessianThreshold(500.0), SURF_HessianThreshold(1000.0)), testing::Values(SURF_Octaves(3), SURF_Octaves(4)), testing::Values(SURF_OctaveLayers(2), SURF_OctaveLayers(3)), @@ -245,17 +194,15 @@ INSTANTIATE_TEST_CASE_P(GPU_Features2D, SURF, testing::Combine( ////////////////////////////////////////////////////// // VIBE -PARAM_TEST_CASE(VIBE, cv::gpu::DeviceInfo, cv::Size, MatType, UseRoi) +PARAM_TEST_CASE(VIBE, cv::Size, MatType, UseRoi) { }; GPU_TEST_P(VIBE, Accuracy) { - const cv::gpu::DeviceInfo devInfo = GET_PARAM(0); - cv::gpu::setDevice(devInfo.deviceID()); - const cv::Size size = GET_PARAM(1); - const int type = GET_PARAM(2); - const bool useRoi = GET_PARAM(3); + const cv::Size size = GET_PARAM(0); + const int type = GET_PARAM(1); + const bool useRoi = GET_PARAM(2); const cv::Mat fullfg(size, CV_8UC1, cv::Scalar::all(255)); @@ -278,7 +225,6 @@ GPU_TEST_P(VIBE, Accuracy) } INSTANTIATE_TEST_CASE_P(GPU_Video, VIBE, testing::Combine( - ALL_DEVICES, DIFFERENT_SIZES, testing::Values(MatType(CV_8UC1), MatType(CV_8UC3), MatType(CV_8UC4)), WHOLE_SUBMAT)); diff --git a/modules/nonfree/test/test_main.cpp b/modules/nonfree/test/test_main.cpp index c9e33a9431..6b24993447 100644 --- a/modules/nonfree/test/test_main.cpp +++ b/modules/nonfree/test/test_main.cpp @@ -1,73 +1,3 @@ #include "test_precomp.hpp" -#if defined(HAVE_OPENCV_GPU) && defined(HAVE_CUDA) - -using namespace cv; -using namespace cv::gpu; -using namespace cvtest; -using namespace testing; - -int main(int argc, char **argv) -{ - try - { - const char* keys = - "{ h | help ? | false | Print help}" - "{ i | info | false | Print information about system and exit }" - "{ d | device | -1 | Device on which tests will be executed (-1 means all devices) }" - ; - - CommandLineParser cmd(argc, (const char**)argv, keys); - - if (cmd.get("help")) - { - cmd.printParams(); - return 0; - } - - printCudaInfo(); - - if (cmd.get("info")) - { - return 0; - } - - int device = cmd.get("device"); - if (device < 0) - { - DeviceManager::instance().loadAll(); - - std::cout << "Run tests on all supported devices \n" << std::endl; - } - else - { - DeviceManager::instance().load(device); - - DeviceInfo info(device); - std::cout << "Run tests on device " << device << " [" << info.name() << "] \n" << std::endl; -} - - TS::ptr()->init("cv"); - InitGoogleTest(&argc, argv); - - return RUN_ALL_TESTS(); -} - catch (const std::exception& e) - { - std::cerr << e.what() << std::endl; - return -1; - } - catch (...) -{ - std::cerr << "Unknown error" << std::endl; - return -1; - } - - return 0; -} - -#else // HAVE_CUDA - CV_TEST_MAIN("cv") - -#endif // HAVE_CUDA diff --git a/modules/nonfree/test/test_precomp.hpp b/modules/nonfree/test/test_precomp.hpp index 15f2b95735..5be95a317d 100644 --- a/modules/nonfree/test/test_precomp.hpp +++ b/modules/nonfree/test/test_precomp.hpp @@ -14,14 +14,16 @@ #include "opencv2/highgui/highgui.hpp" #include "opencv2/nonfree/nonfree.hpp" +#include "opencv2/ts/gpu_test.hpp" + #include "opencv2/opencv_modules.hpp" + #ifdef HAVE_OPENCV_OCL # include "opencv2/nonfree/ocl.hpp" #endif -#if defined(HAVE_OPENCV_GPU) && defined(HAVE_CUDA) - #include "opencv2/ts/gpu_test.hpp" - #include "opencv2/nonfree/gpu.hpp" +#ifdef HAVE_OPENCV_GPU +# include "opencv2/nonfree/gpu.hpp" #endif #endif diff --git a/modules/nonfree/test/test_surf.ocl.cpp b/modules/nonfree/test/test_surf.ocl.cpp index 76ed37de45..d6a877bc80 100644 --- a/modules/nonfree/test/test_surf.ocl.cpp +++ b/modules/nonfree/test/test_surf.ocl.cpp @@ -109,17 +109,6 @@ static int getMatchedPointsCount(const std::vector& keypoints1, co return validCount; } -#define PARAM_TEST_CASE(name, ...) struct name : testing::TestWithParam< std::tr1::tuple< __VA_ARGS__ > > -#define IMPLEMENT_PARAM_CLASS(name, type) \ - namespace { class name { \ - public: \ - name ( type arg = type ()) : val_(arg) {} \ - operator type () const {return val_;} \ - private: \ - type val_; \ - }; \ - inline void PrintTo( name param, std::ostream* os) {*os << #name << "=" << testing::PrintToString(static_cast< type >(param));}} - IMPLEMENT_PARAM_CLASS(HessianThreshold, double) IMPLEMENT_PARAM_CLASS(Octaves, int) IMPLEMENT_PARAM_CLASS(OctaveLayers, int) diff --git a/samples/gpu/super_resolution.cpp b/samples/gpu/super_resolution.cpp index 2dd3656b0e..80aa480290 100644 --- a/samples/gpu/super_resolution.cpp +++ b/samples/gpu/super_resolution.cpp @@ -48,8 +48,6 @@ static Ptr createOptFlow(const string& name, bool useGpu) cerr << "Incorrect Optical Flow algorithm - " << name << endl; exit(-1); } - - return Ptr(); } int main(int argc, const char* argv[])