made module dependency optional
This commit is contained in:
parent
62edeeed16
commit
af2a700671
@ -6,4 +6,4 @@ set(the_description "GPU-accelerated Background Segmentation")
|
||||
|
||||
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)
|
||||
|
@ -41,8 +41,14 @@
|
||||
//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;
|
||||
@ -60,6 +66,13 @@ using namespace perf;
|
||||
# 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()
|
||||
@ -68,10 +81,7 @@ namespace cv
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////
|
||||
// FGDStatModel
|
||||
|
||||
#if BUILD_WITH_VIDEO_INPUT_SUPPORT
|
||||
#endif
|
||||
|
||||
DEF_PARAM_TEST_1(Video, string);
|
||||
|
||||
@ -91,7 +101,7 @@ PERF_TEST_P(Video, FGDStatModel,
|
||||
|
||||
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);
|
||||
@ -108,14 +118,18 @@ PERF_TEST_P(Video, FGDStatModel,
|
||||
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));
|
||||
|
||||
@ -136,6 +150,9 @@ PERF_TEST_P(Video, FGDStatModel,
|
||||
|
||||
CPU_SANITY_CHECK(background);
|
||||
CPU_SANITY_CHECK(foreground);
|
||||
#else
|
||||
FAIL_NO_CPU();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -57,6 +57,8 @@
|
||||
#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
|
||||
|
@ -45,7 +45,7 @@
|
||||
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(); }
|
||||
|
||||
@ -309,6 +309,8 @@ namespace
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// smoothForeground
|
||||
|
||||
#ifdef HAVE_OPENCV_GPUFILTERS
|
||||
|
||||
namespace
|
||||
{
|
||||
void morphology(const GpuMat& src, GpuMat& dst, GpuMat& filterBrd, int brd, Ptr<gpu::Filter>& filter, Scalar brdVal)
|
||||
@ -336,6 +338,8 @@ namespace
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// findForegroundRegions
|
||||
|
||||
@ -606,8 +610,10 @@ namespace
|
||||
GpuMat buf_;
|
||||
GpuMat filterBrd_;
|
||||
|
||||
#ifdef HAVE_OPENCV_GPUFILTERS
|
||||
Ptr<gpu::Filter> dilateFilter_;
|
||||
Ptr<gpu::Filter> erodeFilter_;
|
||||
#endif
|
||||
|
||||
CvMemStorage* storage_;
|
||||
};
|
||||
@ -645,8 +651,10 @@ namespace
|
||||
|
||||
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_);
|
||||
@ -702,6 +710,7 @@ namespace
|
||||
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));
|
||||
@ -710,6 +719,7 @@ namespace
|
||||
dilateFilter_ = gpu::createMorphologyFilter(MORPH_DILATE, CV_8UC1, kernel, anchor);
|
||||
erodeFilter_ = gpu::createMorphologyFilter(MORPH_ERODE, CV_8UC1, kernel, anchor);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -45,7 +45,7 @@
|
||||
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>(); }
|
||||
|
||||
@ -141,8 +141,10 @@ namespace
|
||||
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)
|
||||
@ -212,6 +214,7 @@ namespace
|
||||
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)
|
||||
{
|
||||
@ -220,6 +223,7 @@ namespace
|
||||
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_;
|
||||
@ -255,8 +259,10 @@ namespace
|
||||
|
||||
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_);
|
||||
|
@ -46,12 +46,21 @@
|
||||
#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__ */
|
||||
|
@ -41,7 +41,10 @@
|
||||
//M*/
|
||||
|
||||
#include "test_precomp.hpp"
|
||||
#include "opencv2/legacy.hpp"
|
||||
|
||||
#ifdef HAVE_OPENCV_LEGACY
|
||||
# include "opencv2/legacy.hpp"
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CUDA
|
||||
|
||||
@ -62,7 +65,7 @@ using namespace cvtest;
|
||||
//////////////////////////////////////////////////////
|
||||
// FGDStatModel
|
||||
|
||||
#if BUILD_WITH_VIDEO_INPUT_SUPPORT
|
||||
#if BUILD_WITH_VIDEO_INPUT_SUPPORT && defined(HAVE_OPENCV_LEGACY)
|
||||
|
||||
namespace cv
|
||||
{
|
||||
|
@ -59,4 +59,6 @@
|
||||
#include "opencv2/gpubgsegm.hpp"
|
||||
#include "opencv2/video.hpp"
|
||||
|
||||
#include "opencv2/opencv_modules.hpp"
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user