From c9e07bbc95ef1ed018f6d0922bb3b93bfc5e5463 Mon Sep 17 00:00:00 2001 From: Vladislav Vinogradov Date: Thu, 22 Jan 2015 16:36:16 +0300 Subject: [PATCH] exclude compactPoints and calcWobbleSuppressionMaps from compilation if they are not needed --- modules/videostab/src/global_motion.cpp | 49 ++++++++-------- modules/videostab/src/wobble_suppression.cpp | 59 ++++++++++---------- 2 files changed, 51 insertions(+), 57 deletions(-) diff --git a/modules/videostab/src/global_motion.cpp b/modules/videostab/src/global_motion.cpp index d73751e395..d840e895d2 100644 --- a/modules/videostab/src/global_motion.cpp +++ b/modules/videostab/src/global_motion.cpp @@ -49,34 +49,31 @@ #include "opencv2/core/private.cuda.hpp" -#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); +#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); - } -}} + 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 diff --git a/modules/videostab/src/wobble_suppression.cpp b/modules/videostab/src/wobble_suppression.cpp index 98fb69900f..86067fbcc9 100644 --- a/modules/videostab/src/wobble_suppression.cpp +++ b/modules/videostab/src/wobble_suppression.cpp @@ -50,37 +50,34 @@ # include "opencv2/cudawarping.hpp" #endif -#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); - } -}} - +#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