diff --git a/cmake/OpenCVModule.cmake b/cmake/OpenCVModule.cmake index 708578d8b..fa0291963 100644 --- a/cmake/OpenCVModule.cmake +++ b/cmake/OpenCVModule.cmake @@ -109,7 +109,7 @@ endmacro() # Usage: # ocv_add_module( [INTERNAL|BINDINGS] [REQUIRED] [] [OPTIONAL ]) # Example: -# ocv_add_module(yaom INTERNAL opencv_core opencv_highgui opencv_flann OPTIONAL opencv_cuda) +# ocv_add_module(yaom INTERNAL opencv_core opencv_highgui opencv_flann OPTIONAL opencv_cudev) macro(ocv_add_module _name) ocv_debug_message("ocv_add_module(" ${_name} ${ARGN} ")") string(TOLOWER "${_name}" name) diff --git a/modules/cuda/doc/introduction.markdown b/modules/core/doc/cuda.markdown similarity index 100% rename from modules/cuda/doc/introduction.markdown rename to modules/core/doc/cuda.markdown diff --git a/modules/cuda/CMakeLists.txt b/modules/cuda/CMakeLists.txt deleted file mode 100644 index d668ea8b0..000000000 --- a/modules/cuda/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ -if(IOS OR (NOT HAVE_CUDA AND NOT BUILD_CUDA_STUBS)) - ocv_module_disable(cuda) -endif() - -set(the_description "CUDA-accelerated Computer Vision") - -ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4127 /wd4100 /wd4324 /wd4512 /wd4515 -Wundef -Wmissing-declarations -Wshadow -Wunused-parameter) - -ocv_define_module(cuda opencv_calib3d opencv_cudaarithm opencv_cudawarping OPTIONAL opencv_cudalegacy) diff --git a/modules/cuda/include/opencv2/cuda.hpp b/modules/cuda/include/opencv2/cuda.hpp deleted file mode 100644 index c6004296b..000000000 --- a/modules/cuda/include/opencv2/cuda.hpp +++ /dev/null @@ -1,135 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#ifndef __OPENCV_CUDA_HPP__ -#define __OPENCV_CUDA_HPP__ - -#ifndef __cplusplus -# error cuda.hpp header must be compiled as C++ -#endif - -#include "opencv2/core/cuda.hpp" - -/** - @addtogroup cuda - @{ - @defgroup cuda_calib3d Camera Calibration and 3D Reconstruction - @} - */ - -namespace cv { namespace cuda { - -//////////////////////////// Labeling //////////////////////////// - -//! @addtogroup cuda -//! @{ - -//!performs labeling via graph cuts of a 2D regular 4-connected graph. -CV_EXPORTS void graphcut(GpuMat& terminals, GpuMat& leftTransp, GpuMat& rightTransp, GpuMat& top, GpuMat& bottom, GpuMat& labels, - GpuMat& buf, Stream& stream = Stream::Null()); - -//!performs labeling via graph cuts of a 2D regular 8-connected graph. -CV_EXPORTS void graphcut(GpuMat& terminals, GpuMat& leftTransp, GpuMat& rightTransp, GpuMat& top, GpuMat& topLeft, GpuMat& topRight, - GpuMat& bottom, GpuMat& bottomLeft, GpuMat& bottomRight, - GpuMat& labels, - GpuMat& buf, Stream& stream = Stream::Null()); - -//! compute mask for Generalized Flood fill componetns labeling. -CV_EXPORTS void connectivityMask(const GpuMat& image, GpuMat& mask, const cv::Scalar& lo, const cv::Scalar& hi, Stream& stream = Stream::Null()); - -//! performs connected componnents labeling. -CV_EXPORTS void labelComponents(const GpuMat& mask, GpuMat& components, int flags = 0, Stream& stream = Stream::Null()); - -//! @} - -//////////////////////////// Calib3d //////////////////////////// - -//! @addtogroup cuda_calib3d -//! @{ - -CV_EXPORTS void transformPoints(const GpuMat& src, const Mat& rvec, const Mat& tvec, - GpuMat& dst, Stream& stream = Stream::Null()); - -CV_EXPORTS void projectPoints(const GpuMat& src, const Mat& rvec, const Mat& tvec, - const Mat& camera_mat, const Mat& dist_coef, GpuMat& dst, - Stream& stream = Stream::Null()); - -/** @brief Finds the object pose from 3D-2D point correspondences. - -@param object Single-row matrix of object points. -@param image Single-row matrix of image points. -@param camera_mat 3x3 matrix of intrinsic camera parameters. -@param dist_coef Distortion coefficients. See undistortPoints for details. -@param rvec Output 3D rotation vector. -@param tvec Output 3D translation vector. -@param use_extrinsic_guess Flag to indicate that the function must use rvec and tvec as an -initial transformation guess. It is not supported for now. -@param num_iters Maximum number of RANSAC iterations. -@param max_dist Euclidean distance threshold to detect whether point is inlier or not. -@param min_inlier_count Flag to indicate that the function must stop if greater or equal number -of inliers is achieved. It is not supported for now. -@param inliers Output vector of inlier indices. - */ -CV_EXPORTS void solvePnPRansac(const Mat& object, const Mat& image, const Mat& camera_mat, - const Mat& dist_coef, Mat& rvec, Mat& tvec, bool use_extrinsic_guess=false, - int num_iters=100, float max_dist=8.0, int min_inlier_count=100, - std::vector* inliers=NULL); - -//! @} - -//////////////////////////// VStab //////////////////////////// - -//! @addtogroup cuda -//! @{ - -//! removes points (CV_32FC2, single row matrix) with zero mask value -CV_EXPORTS void compactPoints(GpuMat &points0, GpuMat &points1, const GpuMat &mask); - -CV_EXPORTS void calcWobbleSuppressionMaps( - int left, int idx, int right, Size size, const Mat &ml, const Mat &mr, - GpuMat &mapx, GpuMat &mapy); - -//! @} - -}} // namespace cv { namespace cuda { - -#endif /* __OPENCV_CUDA_HPP__ */ diff --git a/modules/cuda/perf/perf_main.cpp b/modules/cuda/perf/perf_main.cpp deleted file mode 100644 index f01a2768d..000000000 --- a/modules/cuda/perf/perf_main.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "perf_precomp.hpp" - -using namespace perf; - -CV_PERF_TEST_CUDA_MAIN(cuda) diff --git a/modules/cuda/perf/perf_precomp.hpp b/modules/cuda/perf/perf_precomp.hpp deleted file mode 100644 index f810968cb..000000000 --- a/modules/cuda/perf/perf_precomp.hpp +++ /dev/null @@ -1,64 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#ifdef __GNUC__ -# pragma GCC diagnostic ignored "-Wmissing-declarations" -# if defined __clang__ || defined __APPLE__ -# pragma GCC diagnostic ignored "-Wmissing-prototypes" -# pragma GCC diagnostic ignored "-Wextra" -# endif -#endif - -#ifndef __OPENCV_PERF_PRECOMP_HPP__ -#define __OPENCV_PERF_PRECOMP_HPP__ - -#include "opencv2/ts.hpp" -#include "opencv2/ts/cuda_perf.hpp" - -#include "opencv2/cuda.hpp" -#include "opencv2/calib3d.hpp" - -#ifdef GTEST_CREATE_SHARED_LIBRARY -#error no modules except ts should have GTEST_CREATE_SHARED_LIBRARY defined -#endif - -#endif diff --git a/modules/cuda/src/global_motion.cpp b/modules/cuda/src/global_motion.cpp deleted file mode 100644 index 4f847c924..000000000 --- a/modules/cuda/src/global_motion.cpp +++ /dev/null @@ -1,96 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "precomp.hpp" - -using namespace cv; -using namespace cv::cuda; - -#if !defined HAVE_CUDA || defined(CUDA_DISABLER) - -void cv::cuda::compactPoints(GpuMat&, GpuMat&, const GpuMat&) { throw_no_cuda(); } -void cv::cuda::calcWobbleSuppressionMaps( - int, int, int, Size, const Mat&, const Mat&, GpuMat&, GpuMat&) { throw_no_cuda(); } - -#else - -namespace cv { namespace cuda { namespace device { namespace globmotion { - - int compactPoints(int N, float *points0, float *points1, const uchar *mask); - - void calcWobbleSuppressionMaps( - int left, int idx, int right, int width, int height, - const float *ml, const float *mr, PtrStepSzf mapx, PtrStepSzf mapy); - -}}}} - -void cv::cuda::compactPoints(GpuMat &points0, GpuMat &points1, const GpuMat &mask) -{ - CV_Assert(points0.rows == 1 && points1.rows == 1 && mask.rows == 1); - CV_Assert(points0.type() == CV_32FC2 && points1.type() == CV_32FC2 && mask.type() == CV_8U); - CV_Assert(points0.cols == mask.cols && points1.cols == mask.cols); - - int npoints = points0.cols; - int remaining = cv::cuda::device::globmotion::compactPoints( - npoints, (float*)points0.data, (float*)points1.data, mask.data); - - points0 = points0.colRange(0, remaining); - points1 = points1.colRange(0, remaining); -} - - -void cv::cuda::calcWobbleSuppressionMaps( - int left, int idx, int right, Size size, const Mat &ml, const Mat &mr, - GpuMat &mapx, GpuMat &mapy) -{ - CV_Assert(ml.size() == Size(3, 3) && ml.type() == CV_32F && ml.isContinuous()); - CV_Assert(mr.size() == Size(3, 3) && mr.type() == CV_32F && mr.isContinuous()); - - mapx.create(size, CV_32F); - mapy.create(size, CV_32F); - - cv::cuda::device::globmotion::calcWobbleSuppressionMaps( - left, idx, right, size.width, size.height, - ml.ptr(), mr.ptr(), mapx, mapy); -} - -#endif diff --git a/modules/cuda/src/precomp.hpp b/modules/cuda/src/precomp.hpp deleted file mode 100644 index 7feeadddc..000000000 --- a/modules/cuda/src/precomp.hpp +++ /dev/null @@ -1,60 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#ifndef __OPENCV_PRECOMP_H__ -#define __OPENCV_PRECOMP_H__ - -#include "opencv2/cuda.hpp" -#include "opencv2/cudaarithm.hpp" -#include "opencv2/cudawarping.hpp" -#include "opencv2/calib3d.hpp" - -#include "opencv2/core/private.cuda.hpp" -#include "opencv2/core/utility.hpp" - -#include "opencv2/opencv_modules.hpp" - -#ifdef HAVE_OPENCV_CUDALEGACY -# include "opencv2/cudalegacy/private.hpp" -#endif - -#endif /* __OPENCV_PRECOMP_H__ */ diff --git a/modules/cuda/test/test_global_motion.cpp b/modules/cuda/test/test_global_motion.cpp deleted file mode 100644 index 633fe647c..000000000 --- a/modules/cuda/test/test_global_motion.cpp +++ /dev/null @@ -1,90 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "test_precomp.hpp" - -#ifdef HAVE_CUDA - -using namespace std; -using namespace cv; - -struct CompactPoints : testing::TestWithParam -{ - virtual void SetUp() { cuda::setDevice(GetParam().deviceID()); } -}; - -CUDA_TEST_P(CompactPoints, CanCompactizeSmallInput) -{ - Mat src0(1, 3, CV_32FC2); - src0.at(0,0) = Point2f(0,0); - src0.at(0,1) = Point2f(0,1); - src0.at(0,2) = Point2f(0,2); - - Mat src1(1, 3, CV_32FC2); - src1.at(0,0) = Point2f(1,0); - src1.at(0,1) = Point2f(1,1); - src1.at(0,2) = Point2f(1,2); - - Mat mask(1, 3, CV_8U); - mask.at(0,0) = 1; - mask.at(0,1) = 0; - mask.at(0,2) = 1; - - cuda::GpuMat dsrc0(src0), dsrc1(src1), dmask(mask); - cuda::compactPoints(dsrc0, dsrc1, dmask); - - dsrc0.download(src0); - dsrc1.download(src1); - - ASSERT_EQ(2, src0.cols); - ASSERT_EQ(2, src1.cols); - - ASSERT_TRUE(src0.at(0,0) == Point2f(0,0)); - ASSERT_TRUE(src0.at(0,1) == Point2f(0,2)); - - ASSERT_TRUE(src1.at(0,0) == Point2f(1,0)); - ASSERT_TRUE(src1.at(0,1) == Point2f(1,2)); -} - -INSTANTIATE_TEST_CASE_P(CUDA_GlobalMotion, CompactPoints, ALL_DEVICES); - -#endif // HAVE_CUDA diff --git a/modules/cuda/test/test_main.cpp b/modules/cuda/test/test_main.cpp deleted file mode 100644 index 04f4fcf6e..000000000 --- a/modules/cuda/test/test_main.cpp +++ /dev/null @@ -1,45 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "test_precomp.hpp" - -CV_CUDA_TEST_MAIN("gpu") diff --git a/modules/cuda/test/test_precomp.hpp b/modules/cuda/test/test_precomp.hpp deleted file mode 100644 index e3b33017a..000000000 --- a/modules/cuda/test/test_precomp.hpp +++ /dev/null @@ -1,66 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#ifdef __GNUC__ -# pragma GCC diagnostic ignored "-Wmissing-declarations" -# if defined __clang__ || defined __APPLE__ -# pragma GCC diagnostic ignored "-Wmissing-prototypes" -# pragma GCC diagnostic ignored "-Wextra" -# endif -#endif - -#ifndef __OPENCV_TEST_PRECOMP_HPP__ -#define __OPENCV_TEST_PRECOMP_HPP__ - -#include - -#include "opencv2/ts.hpp" -#include "opencv2/ts/cuda_test.hpp" - -#include "opencv2/cuda.hpp" -#include "opencv2/core.hpp" -#include "opencv2/core/opengl.hpp" -#include "opencv2/calib3d.hpp" - -#include "cvconfig.h" - -#endif diff --git a/modules/cudalegacy/CMakeLists.txt b/modules/cudalegacy/CMakeLists.txt index 0ef6e359b..7fe342e11 100644 --- a/modules/cudalegacy/CMakeLists.txt +++ b/modules/cudalegacy/CMakeLists.txt @@ -6,4 +6,5 @@ set(the_description "CUDA-accelerated Computer Vision (legacy)") ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4127 /wd4130 /wd4324 /wd4512 /wd4310 -Wundef -Wmissing-declarations -Wuninitialized -Wshadow) -ocv_define_module(cudalegacy opencv_core opencv_video OPTIONAL opencv_objdetect opencv_imgproc opencv_cudaarithm opencv_cudafilters opencv_cudaimgproc) +ocv_define_module(cudalegacy opencv_core opencv_video + OPTIONAL opencv_objdetect opencv_imgproc opencv_calib3d opencv_cudaarithm opencv_cudafilters opencv_cudaimgproc) diff --git a/modules/cudalegacy/include/opencv2/cudalegacy.hpp b/modules/cudalegacy/include/opencv2/cudalegacy.hpp index f0107499d..c27a1161f 100644 --- a/modules/cudalegacy/include/opencv2/cudalegacy.hpp +++ b/modules/cudalegacy/include/opencv2/cudalegacy.hpp @@ -63,6 +63,10 @@ namespace cv { namespace cuda { //! @addtogroup cudalegacy //! @{ +// +// ImagePyramid +// + class CV_EXPORTS ImagePyramid : public Algorithm { public: @@ -227,6 +231,58 @@ CV_EXPORTS void interpolateFrames(const GpuMat& frame0, const GpuMat& frame1, CV_EXPORTS void createOpticalFlowNeedleMap(const GpuMat& u, const GpuMat& v, GpuMat& vertex, GpuMat& colors); +// +// Labeling +// + +//!performs labeling via graph cuts of a 2D regular 4-connected graph. +CV_EXPORTS void graphcut(GpuMat& terminals, GpuMat& leftTransp, GpuMat& rightTransp, GpuMat& top, GpuMat& bottom, GpuMat& labels, + GpuMat& buf, Stream& stream = Stream::Null()); + +//!performs labeling via graph cuts of a 2D regular 8-connected graph. +CV_EXPORTS void graphcut(GpuMat& terminals, GpuMat& leftTransp, GpuMat& rightTransp, GpuMat& top, GpuMat& topLeft, GpuMat& topRight, + GpuMat& bottom, GpuMat& bottomLeft, GpuMat& bottomRight, + GpuMat& labels, + GpuMat& buf, Stream& stream = Stream::Null()); + +//! compute mask for Generalized Flood fill componetns labeling. +CV_EXPORTS void connectivityMask(const GpuMat& image, GpuMat& mask, const cv::Scalar& lo, const cv::Scalar& hi, Stream& stream = Stream::Null()); + +//! performs connected componnents labeling. +CV_EXPORTS void labelComponents(const GpuMat& mask, GpuMat& components, int flags = 0, Stream& stream = Stream::Null()); + +// +// Calib3d +// + +CV_EXPORTS void transformPoints(const GpuMat& src, const Mat& rvec, const Mat& tvec, + GpuMat& dst, Stream& stream = Stream::Null()); + +CV_EXPORTS void projectPoints(const GpuMat& src, const Mat& rvec, const Mat& tvec, + const Mat& camera_mat, const Mat& dist_coef, GpuMat& dst, + Stream& stream = Stream::Null()); + +/** @brief Finds the object pose from 3D-2D point correspondences. + +@param object Single-row matrix of object points. +@param image Single-row matrix of image points. +@param camera_mat 3x3 matrix of intrinsic camera parameters. +@param dist_coef Distortion coefficients. See undistortPoints for details. +@param rvec Output 3D rotation vector. +@param tvec Output 3D translation vector. +@param use_extrinsic_guess Flag to indicate that the function must use rvec and tvec as an +initial transformation guess. It is not supported for now. +@param num_iters Maximum number of RANSAC iterations. +@param max_dist Euclidean distance threshold to detect whether point is inlier or not. +@param min_inlier_count Flag to indicate that the function must stop if greater or equal number +of inliers is achieved. It is not supported for now. +@param inliers Output vector of inlier indices. + */ +CV_EXPORTS void solvePnPRansac(const Mat& object, const Mat& image, const Mat& camera_mat, + const Mat& dist_coef, Mat& rvec, Mat& tvec, bool use_extrinsic_guess=false, + int num_iters=100, float max_dist=8.0, int min_inlier_count=100, + std::vector* inliers=NULL); + //! @} }} diff --git a/modules/cudalegacy/perf/perf_bgsegm.cpp b/modules/cudalegacy/perf/perf_bgsegm.cpp index a37c4fde1..436791049 100644 --- a/modules/cudalegacy/perf/perf_bgsegm.cpp +++ b/modules/cudalegacy/perf/perf_bgsegm.cpp @@ -122,13 +122,6 @@ PERF_TEST_P(Video, FGDStatModel, d_fgd->apply(d_frame, foreground); } - -#ifdef HAVE_OPENCV_CUDAIMGPROC - cv::cuda::GpuMat background3, background; - d_fgd->getBackgroundImage(background3); - cv::cuda::cvtColor(background3, background, cv::COLOR_BGR2BGRA); - CUDA_SANITY_CHECK(background, 1e-2, ERROR_RELATIVE); -#endif } else { diff --git a/modules/cuda/perf/perf_calib3d.cpp b/modules/cudalegacy/perf/perf_calib3d.cpp similarity index 98% rename from modules/cuda/perf/perf_calib3d.cpp rename to modules/cudalegacy/perf/perf_calib3d.cpp index 4148b5191..0e708ce4f 100644 --- a/modules/cuda/perf/perf_calib3d.cpp +++ b/modules/cudalegacy/perf/perf_calib3d.cpp @@ -42,6 +42,10 @@ #include "perf_precomp.hpp" +#ifdef HAVE_OPENCV_CALIB3D + +#include "opencv2/calib3d.hpp" + using namespace std; using namespace testing; using namespace perf; @@ -133,3 +137,5 @@ PERF_TEST_P(Count, Calib3D_SolvePnPRansac, CPU_SANITY_CHECK(tvec, 1e-6); } } + +#endif diff --git a/modules/cuda/perf/perf_labeling.cpp b/modules/cudalegacy/perf/perf_labeling.cpp similarity index 100% rename from modules/cuda/perf/perf_labeling.cpp rename to modules/cudalegacy/perf/perf_labeling.cpp diff --git a/modules/cuda/src/calib3d.cpp b/modules/cudalegacy/src/calib3d.cpp similarity index 99% rename from modules/cuda/src/calib3d.cpp rename to modules/cudalegacy/src/calib3d.cpp index eaadb9343..7d8c816fa 100644 --- a/modules/cuda/src/calib3d.cpp +++ b/modules/cudalegacy/src/calib3d.cpp @@ -45,7 +45,7 @@ using namespace cv; using namespace cv::cuda; -#if !defined HAVE_CUDA || defined(CUDA_DISABLER) +#if !defined HAVE_CUDA || !defined HAVE_OPENCV_CALIB3D || defined(CUDA_DISABLER) void cv::cuda::transformPoints(const GpuMat&, const Mat&, const Mat&, GpuMat&, Stream&) { throw_no_cuda(); } diff --git a/modules/cuda/src/cuda/calib3d.cu b/modules/cudalegacy/src/cuda/calib3d.cu similarity index 100% rename from modules/cuda/src/cuda/calib3d.cu rename to modules/cudalegacy/src/cuda/calib3d.cu diff --git a/modules/cuda/src/cuda/ccomponetns.cu b/modules/cudalegacy/src/cuda/ccomponetns.cu similarity index 100% rename from modules/cuda/src/cuda/ccomponetns.cu rename to modules/cudalegacy/src/cuda/ccomponetns.cu diff --git a/modules/cuda/src/graphcuts.cpp b/modules/cudalegacy/src/graphcuts.cpp similarity index 100% rename from modules/cuda/src/graphcuts.cpp rename to modules/cudalegacy/src/graphcuts.cpp diff --git a/modules/cudalegacy/src/precomp.hpp b/modules/cudalegacy/src/precomp.hpp index a15e9f03c..9eda7e01d 100644 --- a/modules/cudalegacy/src/precomp.hpp +++ b/modules/cudalegacy/src/precomp.hpp @@ -56,6 +56,10 @@ # include "opencv2/objdetect.hpp" #endif +#ifdef HAVE_OPENCV_CALIB3D +# include "opencv2/calib3d.hpp" +#endif + #ifdef HAVE_OPENCV_CUDAARITHM # include "opencv2/cudaarithm.hpp" #endif diff --git a/modules/cuda/test/test_calib3d.cpp b/modules/cudalegacy/test/test_calib3d.cpp similarity index 98% rename from modules/cuda/test/test_calib3d.cpp rename to modules/cudalegacy/test/test_calib3d.cpp index 7208b10ba..7a73f817e 100644 --- a/modules/cuda/test/test_calib3d.cpp +++ b/modules/cudalegacy/test/test_calib3d.cpp @@ -42,7 +42,9 @@ #include "test_precomp.hpp" -#ifdef HAVE_CUDA +#if defined HAVE_CUDA && defined HAVE_OPENCV_CALIB3D + +#include "opencv2/calib3d.hpp" using namespace cvtest; diff --git a/modules/cuda/test/test_labeling.cpp b/modules/cudalegacy/test/test_labeling.cpp similarity index 100% rename from modules/cuda/test/test_labeling.cpp rename to modules/cudalegacy/test/test_labeling.cpp diff --git a/modules/cudalegacy/test/test_precomp.hpp b/modules/cudalegacy/test/test_precomp.hpp index 5169ef2bb..727b40d83 100644 --- a/modules/cudalegacy/test/test_precomp.hpp +++ b/modules/cudalegacy/test/test_precomp.hpp @@ -74,6 +74,8 @@ #include "opencv2/core/private.cuda.hpp" +#include "opencv2/opencv_modules.hpp" + #include "cvconfig.h" #include "NCVTest.hpp" diff --git a/modules/stitching/CMakeLists.txt b/modules/stitching/CMakeLists.txt index 36d4452c7..8650f7280 100644 --- a/modules/stitching/CMakeLists.txt +++ b/modules/stitching/CMakeLists.txt @@ -5,4 +5,4 @@ if(HAVE_CUDA) endif() ocv_define_module(stitching opencv_imgproc opencv_features2d opencv_calib3d opencv_objdetect - OPTIONAL opencv_cuda opencv_cudaarithm opencv_cudafilters opencv_cudafeatures2d opencv_xfeatures2d) + OPTIONAL opencv_cudaarithm opencv_cudafilters opencv_cudafeatures2d opencv_cudalegacy opencv_xfeatures2d) diff --git a/modules/stitching/include/opencv2/stitching/detail/seam_finders.hpp b/modules/stitching/include/opencv2/stitching/detail/seam_finders.hpp index e4f7816bb..37029215e 100644 --- a/modules/stitching/include/opencv2/stitching/detail/seam_finders.hpp +++ b/modules/stitching/include/opencv2/stitching/detail/seam_finders.hpp @@ -249,7 +249,7 @@ private: }; -#ifdef HAVE_OPENCV_CUDA +#ifdef HAVE_OPENCV_CUDALEGACY class CV_EXPORTS GraphCutSeamFinderGpu : public GraphCutSeamFinderBase, public PairwiseSeamFinder { public: diff --git a/modules/stitching/src/precomp.hpp b/modules/stitching/src/precomp.hpp index c70d9f9a4..70636b684 100644 --- a/modules/stitching/src/precomp.hpp +++ b/modules/stitching/src/precomp.hpp @@ -83,8 +83,8 @@ # include "opencv2/cudafeatures2d.hpp" #endif -#ifdef HAVE_OPENCV_CUDA -# include "opencv2/cuda.hpp" +#ifdef HAVE_OPENCV_CUDALEGACY +# include "opencv2/cudalegacy.hpp" #endif #ifdef HAVE_OPENCV_XFEATURES2D diff --git a/modules/stitching/src/seam_finders.cpp b/modules/stitching/src/seam_finders.cpp index 4d5c8d163..8a673ede0 100644 --- a/modules/stitching/src/seam_finders.cpp +++ b/modules/stitching/src/seam_finders.cpp @@ -1321,7 +1321,7 @@ void GraphCutSeamFinder::find(const std::vector &src, const std::vector &src, const std::vector &corners, std::vector &masks) { diff --git a/modules/stitching/src/stitcher.cpp b/modules/stitching/src/stitcher.cpp index 43efbd388..c515c192f 100644 --- a/modules/stitching/src/stitcher.cpp +++ b/modules/stitching/src/stitcher.cpp @@ -56,7 +56,7 @@ Stitcher Stitcher::createDefault(bool try_use_gpu) stitcher.setFeaturesMatcher(makePtr(try_use_gpu)); stitcher.setBundleAdjuster(makePtr()); -#ifdef HAVE_OPENCV_CUDA +#ifdef HAVE_CUDA if (try_use_gpu && cuda::getCudaEnabledDeviceCount() > 0) { #ifdef HAVE_OPENCV_XFEATURES2D @@ -544,7 +544,7 @@ Ptr createStitcher(bool try_use_gpu) stitcher->setFeaturesMatcher(makePtr(try_use_gpu)); stitcher->setBundleAdjuster(makePtr()); - #ifdef HAVE_OPENCV_CUDA + #ifdef HAVE_CUDA if (try_use_gpu && cuda::getCudaEnabledDeviceCount() > 0) { #ifdef HAVE_OPENCV_NONFREE diff --git a/modules/videostab/CMakeLists.txt b/modules/videostab/CMakeLists.txt index e252bdbf5..f57a5d215 100644 --- a/modules/videostab/CMakeLists.txt +++ b/modules/videostab/CMakeLists.txt @@ -1,3 +1,8 @@ set(the_description "Video stabilization") + +if(HAVE_CUDA) + ocv_warnings_disable(CMAKE_CXX_FLAGS -Wundef -Wmissing-declarations -Wshadow -Wunused-parameter) +endif() + ocv_define_module(videostab opencv_imgproc opencv_features2d opencv_video opencv_photo opencv_calib3d - OPTIONAL opencv_cuda opencv_cudawarping opencv_cudaoptflow opencv_videoio) + OPTIONAL opencv_cudawarping opencv_cudaoptflow opencv_videoio) diff --git a/modules/videostab/include/opencv2/videostab/global_motion.hpp b/modules/videostab/include/opencv2/videostab/global_motion.hpp index 547f1b282..5d51e4234 100644 --- a/modules/videostab/include/opencv2/videostab/global_motion.hpp +++ b/modules/videostab/include/opencv2/videostab/global_motion.hpp @@ -249,7 +249,7 @@ private: std::vector pointsPrevGood_, pointsGood_; }; -#if defined(HAVE_OPENCV_CUDAIMGPROC) && defined(HAVE_OPENCV_CUDA) && defined(HAVE_OPENCV_CUDAOPTFLOW) +#if defined(HAVE_OPENCV_CUDAIMGPROC) && defined(HAVE_OPENCV_CUDAOPTFLOW) class CV_EXPORTS KeypointBasedMotionEstimatorGpu : public ImageMotionEstimatorBase { @@ -280,7 +280,7 @@ private: std::vector rejectionStatus_; }; -#endif // defined(HAVE_OPENCV_CUDAIMGPROC) && defined(HAVE_OPENCV_CUDA) && defined(HAVE_OPENCV_CUDAOPTFLOW) +#endif // defined(HAVE_OPENCV_CUDAIMGPROC) && defined(HAVE_OPENCV_CUDAOPTFLOW) /** @brief Computes motion between two frames assuming that all the intermediate motions are known. diff --git a/modules/videostab/include/opencv2/videostab/wobble_suppression.hpp b/modules/videostab/include/opencv2/videostab/wobble_suppression.hpp index 6701d7810..3f0a9432b 100644 --- a/modules/videostab/include/opencv2/videostab/wobble_suppression.hpp +++ b/modules/videostab/include/opencv2/videostab/wobble_suppression.hpp @@ -119,7 +119,7 @@ private: Mat_ mapx_, mapy_; }; -#if defined(HAVE_OPENCV_CUDA) && defined(HAVE_OPENCV_CUDAWARPING) +#if defined(HAVE_OPENCV_CUDAWARPING) class CV_EXPORTS MoreAccurateMotionWobbleSuppressorGpu : public MoreAccurateMotionWobbleSuppressorBase { public: diff --git a/modules/cuda/src/cuda/global_motion.cu b/modules/videostab/src/cuda/global_motion.cu similarity index 100% rename from modules/cuda/src/cuda/global_motion.cu rename to modules/videostab/src/cuda/global_motion.cu diff --git a/modules/videostab/src/global_motion.cpp b/modules/videostab/src/global_motion.cpp index 4875bef23..d840e895d 100644 --- a/modules/videostab/src/global_motion.cpp +++ b/modules/videostab/src/global_motion.cpp @@ -47,8 +47,33 @@ #include "opencv2/opencv_modules.hpp" #include "clp.hpp" -#ifdef HAVE_OPENCV_CUDA -# include "opencv2/cuda.hpp" +#include "opencv2/core/private.cuda.hpp" + +#if defined(HAVE_OPENCV_CUDAIMGPROC) && defined(HAVE_OPENCV_CUDAOPTFLOW) + #if !defined HAVE_CUDA || defined(CUDA_DISABLER) + namespace cv { namespace cuda { + static void compactPoints(GpuMat&, GpuMat&, const GpuMat&) { throw_no_cuda(); } + }} + #else + namespace cv { namespace cuda { namespace device { namespace globmotion { + int compactPoints(int N, float *points0, float *points1, const uchar *mask); + }}}} + namespace cv { namespace cuda { + static void compactPoints(GpuMat &points0, GpuMat &points1, const GpuMat &mask) + { + CV_Assert(points0.rows == 1 && points1.rows == 1 && mask.rows == 1); + CV_Assert(points0.type() == CV_32FC2 && points1.type() == CV_32FC2 && mask.type() == CV_8U); + CV_Assert(points0.cols == mask.cols && points1.cols == mask.cols); + + int npoints = points0.cols; + int remaining = cv::cuda::device::globmotion::compactPoints( + npoints, (float*)points0.data, (float*)points1.data, mask.data); + + points0 = points0.colRange(0, remaining); + points1 = points1.colRange(0, remaining); + } + }} + #endif #endif namespace cv @@ -736,8 +761,7 @@ Mat KeypointBasedMotionEstimator::estimate(const Mat &frame0, const Mat &frame1, return motionEstimator_->estimate(pointsPrevGood_, pointsGood_, ok); } - -#if defined(HAVE_OPENCV_CUDAIMGPROC) && defined(HAVE_OPENCV_CUDA) && defined(HAVE_OPENCV_CUDAOPTFLOW) +#if defined(HAVE_OPENCV_CUDAIMGPROC) && defined(HAVE_OPENCV_CUDAOPTFLOW) KeypointBasedMotionEstimatorGpu::KeypointBasedMotionEstimatorGpu(Ptr estimator) : ImageMotionEstimatorBase(estimator->motionModel()), motionEstimator_(estimator) @@ -812,7 +836,7 @@ Mat KeypointBasedMotionEstimatorGpu::estimate(const cuda::GpuMat &frame0, const return motionEstimator_->estimate(hostPointsPrev_, hostPoints_, ok); } -#endif // defined(HAVE_OPENCV_CUDAIMGPROC) && defined(HAVE_OPENCV_CUDA) && defined(HAVE_OPENCV_CUDAOPTFLOW) +#endif // defined(HAVE_OPENCV_CUDAIMGPROC) && defined(HAVE_OPENCV_CUDAOPTFLOW) Mat getMotion(int from, int to, const std::vector &motions) diff --git a/modules/videostab/src/wobble_suppression.cpp b/modules/videostab/src/wobble_suppression.cpp index e2635d5e0..86067fbcc 100644 --- a/modules/videostab/src/wobble_suppression.cpp +++ b/modules/videostab/src/wobble_suppression.cpp @@ -44,14 +44,41 @@ #include "opencv2/videostab/wobble_suppression.hpp" #include "opencv2/videostab/ring_buffer.hpp" +#include "opencv2/core/private.cuda.hpp" + #ifdef HAVE_OPENCV_CUDAWARPING # include "opencv2/cudawarping.hpp" #endif -#ifdef HAVE_OPENCV_CUDA -# include "opencv2/cuda.hpp" -#endif +#if defined(HAVE_OPENCV_CUDAWARPING) + #if !defined HAVE_CUDA || defined(CUDA_DISABLER) + namespace cv { namespace cuda { + static void calcWobbleSuppressionMaps(int, int, int, Size, const Mat&, const Mat&, GpuMat&, GpuMat&) { throw_no_cuda(); } + }} + #else + namespace cv { namespace cuda { namespace device { namespace globmotion { + void calcWobbleSuppressionMaps( + int left, int idx, int right, int width, int height, + const float *ml, const float *mr, PtrStepSzf mapx, PtrStepSzf mapy); + }}}} + namespace cv { namespace cuda { + static void calcWobbleSuppressionMaps( + int left, int idx, int right, Size size, const Mat &ml, const Mat &mr, + GpuMat &mapx, GpuMat &mapy) + { + CV_Assert(ml.size() == Size(3, 3) && ml.type() == CV_32F && ml.isContinuous()); + CV_Assert(mr.size() == Size(3, 3) && mr.type() == CV_32F && mr.isContinuous()); + mapx.create(size, CV_32F); + mapy.create(size, CV_32F); + + cv::cuda::device::globmotion::calcWobbleSuppressionMaps( + left, idx, right, size.width, size.height, + ml.ptr(), mr.ptr(), mapx, mapy); + } + }} + #endif +#endif namespace cv { @@ -121,8 +148,7 @@ void MoreAccurateMotionWobbleSuppressor::suppress(int idx, const Mat &frame, Mat remap(frame, result, mapx_, mapy_, INTER_LINEAR, BORDER_REPLICATE); } - -#if defined(HAVE_OPENCV_CUDA) && defined(HAVE_OPENCV_CUDAWARPING) +#if defined(HAVE_OPENCV_CUDAWARPING) void MoreAccurateMotionWobbleSuppressorGpu::suppress(int idx, const cuda::GpuMat &frame, cuda::GpuMat &result) { CV_Assert(motions_ && stabilizationMotions_); diff --git a/samples/cpp/stitching_detailed.cpp b/samples/cpp/stitching_detailed.cpp index 0d9b4a683..2d6351ae1 100644 --- a/samples/cpp/stitching_detailed.cpp +++ b/samples/cpp/stitching_detailed.cpp @@ -673,7 +673,7 @@ int main(int argc, char* argv[]) seam_finder = makePtr(); else if (seam_find_type == "gc_color") { -#ifdef HAVE_OPENCV_CUDA +#ifdef HAVE_OPENCV_CUDALEGACY if (try_cuda && cuda::getCudaEnabledDeviceCount() > 0) seam_finder = makePtr(GraphCutSeamFinderBase::COST_COLOR); else @@ -682,7 +682,7 @@ int main(int argc, char* argv[]) } else if (seam_find_type == "gc_colorgrad") { -#ifdef HAVE_OPENCV_CUDA +#ifdef HAVE_OPENCV_CUDALEGACY if (try_cuda && cuda::getCudaEnabledDeviceCount() > 0) seam_finder = makePtr(GraphCutSeamFinderBase::COST_COLOR_GRAD); else diff --git a/samples/cpp/videostab.cpp b/samples/cpp/videostab.cpp index 703acba41..2eea9b902 100644 --- a/samples/cpp/videostab.cpp +++ b/samples/cpp/videostab.cpp @@ -217,7 +217,7 @@ public: outlierRejector = tblor; } -#if defined(HAVE_OPENCV_CUDAIMGPROC) && defined(HAVE_OPENCV_CUDA) && defined(HAVE_OPENCV_CUDAOPTFLOW) +#if defined(HAVE_OPENCV_CUDAIMGPROC) && defined(HAVE_OPENCV_CUDAOPTFLOW) if (gpu) { Ptr kbest = makePtr(est); @@ -258,7 +258,7 @@ public: outlierRejector = tblor; } -#if defined(HAVE_OPENCV_CUDAIMGPROC) && defined(HAVE_OPENCV_CUDA) && defined(HAVE_OPENCV_CUDAOPTFLOW) +#if defined(HAVE_OPENCV_CUDAIMGPROC) && defined(HAVE_OPENCV_CUDAOPTFLOW) if (gpu) { Ptr kbest = makePtr(est); @@ -343,7 +343,6 @@ int main(int argc, const char **argv) return 0; } -#ifdef HAVE_OPENCV_CUDA if (arg("gpu") == "yes") { cout << "initializing GPU..."; cout.flush(); @@ -352,7 +351,6 @@ int main(int argc, const char **argv) deviceTmp.upload(hostTmp); cout << endl; } -#endif StabilizerBase *stabilizer = 0; @@ -421,7 +419,7 @@ int main(int argc, const char **argv) { Ptr ws = makePtr(); if (arg("gpu") == "yes") -#ifdef HAVE_OPENCV_CUDA +#ifdef HAVE_OPENCV_CUDAWARPING ws = makePtr(); #else throw runtime_error("OpenCV is built without CUDA support"); diff --git a/samples/gpu/CMakeLists.txt b/samples/gpu/CMakeLists.txt index 10c91991c..8741f1170 100644 --- a/samples/gpu/CMakeLists.txt +++ b/samples/gpu/CMakeLists.txt @@ -1,6 +1,6 @@ SET(OPENCV_CUDA_SAMPLES_REQUIRED_DEPS opencv_core opencv_flann opencv_imgproc opencv_imgcodecs opencv_videoio opencv_highgui opencv_ml opencv_video opencv_objdetect opencv_features2d - opencv_calib3d opencv_cuda opencv_superres + opencv_calib3d opencv_superres opencv_cudaarithm opencv_cudafilters opencv_cudawarping opencv_cudaimgproc opencv_cudafeatures2d opencv_cudaoptflow opencv_cudabgsegm opencv_cudastereo opencv_cudalegacy opencv_cudaobjdetect) diff --git a/samples/gpu/performance/performance.cpp b/samples/gpu/performance/performance.cpp index 082a6383c..cef979954 100644 --- a/samples/gpu/performance/performance.cpp +++ b/samples/gpu/performance/performance.cpp @@ -2,6 +2,7 @@ #include #include #include "performance.h" +#include "opencv2/core/cuda.hpp" using namespace std; using namespace cv; diff --git a/samples/gpu/performance/performance.h b/samples/gpu/performance/performance.h index d2386284d..98889f342 100644 --- a/samples/gpu/performance/performance.h +++ b/samples/gpu/performance/performance.h @@ -7,7 +7,6 @@ #include #include #include -#include "opencv2/cuda.hpp" #define TAB " " diff --git a/samples/gpu/performance/tests.cpp b/samples/gpu/performance/tests.cpp index 9e8bfd28c..b4bf4cfbe 100644 --- a/samples/gpu/performance/tests.cpp +++ b/samples/gpu/performance/tests.cpp @@ -3,7 +3,7 @@ #include "opencv2/highgui.hpp" #include "opencv2/calib3d.hpp" #include "opencv2/video.hpp" -#include "opencv2/cuda.hpp" +#include "opencv2/cudalegacy.hpp" #include "opencv2/cudaimgproc.hpp" #include "opencv2/cudaarithm.hpp" #include "opencv2/cudawarping.hpp"