ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4127 /wd4324 /wd4512 -Wundef -Wmissing-declarations)
-ocv_define_module(gpubgsegm opencv_video opencv_imgproc opencv_legacy opencv_gpuarithm opencv_gpufilters opencv_gpuimgproc)
+ocv_define_module(gpubgsegm opencv_video OPTIONAL opencv_legacy opencv_imgproc opencv_gpuarithm opencv_gpufilters opencv_gpuimgproc)
//M*/
#include "perf_precomp.hpp"
-#include "opencv2/legacy.hpp"
-#include "opencv2/gpuimgproc.hpp"
+
+#ifdef HAVE_OPENCV_LEGACY
+# include "opencv2/legacy.hpp"
+#endif
+
+#ifdef HAVE_OPENCV_GPUIMGPROC
+# include "opencv2/gpuimgproc.hpp"
+#endif
using namespace std;
using namespace testing;
# define BUILD_WITH_VIDEO_INPUT_SUPPORT 0
#endif
+//////////////////////////////////////////////////////
+// FGDStatModel
+
+#if BUILD_WITH_VIDEO_INPUT_SUPPORT
+
+#ifdef HAVE_OPENCV_LEGACY
+
namespace cv
{
template<> void Ptr<CvBGStatModel>::delete_obj()
}
}
-//////////////////////////////////////////////////////
-// FGDStatModel
-
-#if BUILD_WITH_VIDEO_INPUT_SUPPORT
+#endif
DEF_PARAM_TEST_1(Video, string);
if (PERF_RUN_GPU())
{
- cv::gpu::GpuMat d_frame(frame), foreground, background3, background;
+ cv::gpu::GpuMat d_frame(frame), foreground;
cv::Ptr<cv::gpu::BackgroundSubtractorFGD> d_fgd = cv::gpu::createBackgroundSubtractorFGD();
d_fgd->apply(d_frame, foreground);
stopTimer();
}
+ GPU_SANITY_CHECK(foreground, 1e-2, ERROR_RELATIVE);
+
+#ifdef HAVE_OPENCV_GPUIMGPROC
+ cv::gpu::GpuMat background3, background;
d_fgd->getBackgroundImage(background3);
cv::gpu::cvtColor(background3, background, cv::COLOR_BGR2BGRA);
-
GPU_SANITY_CHECK(background, 1e-2, ERROR_RELATIVE);
- GPU_SANITY_CHECK(foreground, 1e-2, ERROR_RELATIVE);
+#endif
}
else
{
+#ifdef HAVE_OPENCV_LEGACY
IplImage ipl_frame = frame;
cv::Ptr<CvBGStatModel> model(cvCreateFGDStatModel(&ipl_frame));
CPU_SANITY_CHECK(background);
CPU_SANITY_CHECK(foreground);
+#else
+ FAIL_NO_CPU();
+#endif
}
}
#include "opencv2/gpubgsegm.hpp"
#include "opencv2/video.hpp"
+#include "opencv2/opencv_modules.hpp"
+
#ifdef GTEST_CREATE_SHARED_LIBRARY
#error no modules except ts should have GTEST_CREATE_SHARED_LIBRARY defined
#endif
using namespace cv;
using namespace cv::gpu;
-#if !defined HAVE_CUDA || defined(CUDA_DISABLER)
+#if !defined(HAVE_CUDA) || defined(CUDA_DISABLER) || !defined(HAVE_OPENCV_IMGPROC) || !defined(HAVE_OPENCV_GPUARITHM) || !defined(HAVE_OPENCV_GPUIMGPROC)
cv::gpu::FGDParams::FGDParams() { throw_no_cuda(); }
/////////////////////////////////////////////////////////////////////////
// smoothForeground
+#ifdef HAVE_OPENCV_GPUFILTERS
+
namespace
{
void morphology(const GpuMat& src, GpuMat& dst, GpuMat& filterBrd, int brd, Ptr<gpu::Filter>& filter, Scalar brdVal)
}
}
+#endif
+
/////////////////////////////////////////////////////////////////////////
// findForegroundRegions
GpuMat buf_;
GpuMat filterBrd_;
+#ifdef HAVE_OPENCV_GPUFILTERS
Ptr<gpu::Filter> dilateFilter_;
Ptr<gpu::Filter> erodeFilter_;
+#endif
CvMemStorage* storage_;
};
int FG_pixels_count = bgfgClassification(prevFrame_, curFrame, Ftd_, Fbd_, foreground_, countBuf_, params_, 4);
+#ifdef HAVE_OPENCV_GPUFILTERS
if (params_.perform_morphing > 0)
smoothForeground(foreground_, filterBrd_, buf_, erodeFilter_, dilateFilter_, params_);
+#endif
if (params_.minArea > 0 || params_.is_obj_without_holes)
findForegroundRegions(foreground_, h_foreground_, foreground_regions_, storage_, params_);
stat_.create(firstFrame.size(), params_);
fgd::setBGPixelStat(stat_);
+#ifdef HAVE_OPENCV_GPUFILTERS
if (params_.perform_morphing > 0)
{
Mat kernel = getStructuringElement(MORPH_RECT, Size(1 + params_.perform_morphing * 2, 1 + params_.perform_morphing * 2));
dilateFilter_ = gpu::createMorphologyFilter(MORPH_DILATE, CV_8UC1, kernel, anchor);
erodeFilter_ = gpu::createMorphologyFilter(MORPH_ERODE, CV_8UC1, kernel, anchor);
}
+#endif
}
}
using namespace cv;
using namespace cv::gpu;
-#if !defined HAVE_CUDA || defined(CUDA_DISABLER) || !defined(HAVE_OPENCV_GPUFILTERS)
+#if !defined HAVE_CUDA || defined(CUDA_DISABLER)
Ptr<gpu::BackgroundSubtractorGMG> cv::gpu::createBackgroundSubtractorGMG(int, double) { throw_no_cuda(); return Ptr<gpu::BackgroundSubtractorGMG>(); }
GpuMat colors_;
GpuMat weights_;
+#if defined(HAVE_OPENCV_GPUFILTERS) && defined(HAVE_OPENCV_GPUARITHM)
Ptr<gpu::Filter> boxFilter_;
GpuMat buf_;
+#endif
};
GMGImpl::GMGImpl(int initializationFrames, double decisionThreshold)
funcs[frame.depth()][frame.channels() - 1](frame, fgmask, colors_, weights_, nfeatures_, frameNum_,
learningRate_, updateBackgroundModel_, StreamAccessor::getStream(stream));
+#if defined(HAVE_OPENCV_GPUFILTERS) && defined(HAVE_OPENCV_GPUARITHM)
// medianBlur
if (smoothingRadius_ > 0)
{
const double thresh = 255.0 * minCount / (smoothingRadius_ * smoothingRadius_);
gpu::threshold(buf_, fgmask, thresh, 255.0, THRESH_BINARY, stream);
}
+#endif
// keep track of how many frames we have processed
++frameNum_;
nfeatures_.setTo(Scalar::all(0));
+#if defined(HAVE_OPENCV_GPUFILTERS) && defined(HAVE_OPENCV_GPUARITHM)
if (smoothingRadius_ > 0)
boxFilter_ = gpu::createBoxFilter(CV_8UC1, -1, Size(smoothingRadius_, smoothingRadius_));
+#endif
loadConstants(frameSize_.width, frameSize_.height, minVal_, maxVal_,
quantizationLevels_, backgroundPrior_, decisionThreshold_, maxFeatures_, numInitializationFrames_);
#include <limits>
#include "opencv2/gpubgsegm.hpp"
-#include "opencv2/gpuarithm.hpp"
-#include "opencv2/gpufilters.hpp"
-#include "opencv2/gpuimgproc.hpp"
#include "opencv2/core/private.gpu.hpp"
#include "opencv2/opencv_modules.hpp"
+#ifdef HAVE_OPENCV_GPUARITHM
+# include "opencv2/gpuarithm.hpp"
+#endif
+
+#ifdef HAVE_OPENCV_GPUFILTERS
+# include "opencv2/gpufilters.hpp"
+#endif
+
+#ifdef HAVE_OPENCV_GPUIMGPROC
+# include "opencv2/gpuimgproc.hpp"
+#endif
+
#endif /* __OPENCV_PRECOMP_H__ */
//M*/
#include "test_precomp.hpp"
-#include "opencv2/legacy.hpp"
+
+#ifdef HAVE_OPENCV_LEGACY
+# include "opencv2/legacy.hpp"
+#endif
#ifdef HAVE_CUDA
//////////////////////////////////////////////////////
// FGDStatModel
-#if BUILD_WITH_VIDEO_INPUT_SUPPORT
+#if BUILD_WITH_VIDEO_INPUT_SUPPORT && defined(HAVE_OPENCV_LEGACY)
namespace cv
{
#include "opencv2/gpubgsegm.hpp"
#include "opencv2/video.hpp"
+#include "opencv2/opencv_modules.hpp"
+
#endif