Commit cd1ffd16 authored by Roman Donchenko's avatar Roman Donchenko Committed by OpenCV Buildbot

Merge pull request #2261 from jet47:stitching-cuda-android

parents a1ad1f08 214cbabc
...@@ -4,8 +4,8 @@ endif() ...@@ -4,8 +4,8 @@ endif()
set(the_description "Functionality with possible limitations on the use") set(the_description "Functionality with possible limitations on the use")
ocv_warnings_disable(CMAKE_CXX_FLAGS -Wundef) ocv_warnings_disable(CMAKE_CXX_FLAGS -Wundef)
if (ENABLE_DYNAMIC_CUDA) if(ENABLE_DYNAMIC_CUDA)
set(HAVE_CUDA FALSE) add_definitions(-DDYNAMIC_CUDA_SUPPORT)
ocv_define_module(nonfree opencv_imgproc opencv_features2d opencv_calib3d OPTIONAL opencv_ocl) ocv_define_module(nonfree opencv_imgproc opencv_features2d opencv_calib3d OPTIONAL opencv_ocl)
else() else()
ocv_define_module(nonfree opencv_imgproc opencv_features2d opencv_calib3d OPTIONAL opencv_gpu opencv_ocl) ocv_define_module(nonfree opencv_imgproc opencv_features2d opencv_calib3d OPTIONAL opencv_gpu opencv_ocl)
......
...@@ -43,11 +43,7 @@ ...@@ -43,11 +43,7 @@
#ifndef __OPENCV_NONFREE_GPU_HPP__ #ifndef __OPENCV_NONFREE_GPU_HPP__
#define __OPENCV_NONFREE_GPU_HPP__ #define __OPENCV_NONFREE_GPU_HPP__
#include "opencv2/opencv_modules.hpp" #include "opencv2/core/gpumat.hpp"
#if defined(HAVE_OPENCV_GPU) && !defined(ANDROID)
#include "opencv2/gpu/gpu.hpp"
namespace cv { namespace gpu { namespace cv { namespace gpu {
...@@ -129,6 +125,4 @@ public: ...@@ -129,6 +125,4 @@ public:
} // namespace cv } // namespace cv
#endif // defined(HAVE_OPENCV_GPU)
#endif // __OPENCV_NONFREE_GPU_HPP__ #endif // __OPENCV_NONFREE_GPU_HPP__
...@@ -42,7 +42,9 @@ ...@@ -42,7 +42,9 @@
#include "perf_precomp.hpp" #include "perf_precomp.hpp"
#if defined(HAVE_OPENCV_GPU) && defined(HAVE_CUDA) #include "cvconfig.h"
#if defined(HAVE_OPENCV_GPU) && defined(HAVE_CUDA) && !defined(DYNAMIC_CUDA_SUPPORT)
#include "opencv2/ts/gpu_perf.hpp" #include "opencv2/ts/gpu_perf.hpp"
......
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
#include "opencv2/opencv_modules.hpp" #include "opencv2/opencv_modules.hpp"
#if defined(HAVE_OPENCV_GPU) && !defined(ANDROID) #if defined(HAVE_OPENCV_GPU) && !defined(DYNAMIC_CUDA_SUPPORT)
#include "opencv2/gpu/device/common.hpp" #include "opencv2/gpu/device/common.hpp"
#include "opencv2/gpu/device/limits.hpp" #include "opencv2/gpu/device/limits.hpp"
......
...@@ -51,7 +51,7 @@ ...@@ -51,7 +51,7 @@
#include "opencv2/imgproc/imgproc.hpp" #include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/core/internal.hpp" #include "opencv2/core/internal.hpp"
#if defined(HAVE_OPENCV_GPU) && !defined(ANDROID) #if defined(HAVE_OPENCV_GPU) && !defined(DYNAMIC_CUDA_SUPPORT)
#include "opencv2/nonfree/gpu.hpp" #include "opencv2/nonfree/gpu.hpp"
#if defined(HAVE_CUDA) #if defined(HAVE_CUDA)
......
...@@ -42,12 +42,10 @@ ...@@ -42,12 +42,10 @@
#include "precomp.hpp" #include "precomp.hpp"
#if defined(HAVE_OPENCV_GPU) && !defined(ANDROID)
using namespace cv; using namespace cv;
using namespace cv::gpu; using namespace cv::gpu;
#if !defined (HAVE_CUDA) #if !defined (HAVE_CUDA) || !defined(HAVE_OPENCV_GPU) || defined(DYNAMIC_CUDA_SUPPORT)
cv::gpu::SURF_GPU::SURF_GPU() { throw_nogpu(); } cv::gpu::SURF_GPU::SURF_GPU() { throw_nogpu(); }
cv::gpu::SURF_GPU::SURF_GPU(double, int, int, bool, float, bool) { throw_nogpu(); } cv::gpu::SURF_GPU::SURF_GPU(double, int, int, bool, float, bool) { throw_nogpu(); }
...@@ -421,5 +419,3 @@ void cv::gpu::SURF_GPU::releaseMemory() ...@@ -421,5 +419,3 @@ void cv::gpu::SURF_GPU::releaseMemory()
} }
#endif // !defined (HAVE_CUDA) #endif // !defined (HAVE_CUDA)
#endif // defined(HAVE_OPENCV_GPU) && !defined(ANDROID)
...@@ -42,7 +42,9 @@ ...@@ -42,7 +42,9 @@
#include "test_precomp.hpp" #include "test_precomp.hpp"
#if defined(HAVE_OPENCV_GPU) && defined(HAVE_CUDA) #include "cvconfig.h"
#if defined(HAVE_OPENCV_GPU) && defined(HAVE_CUDA) && !defined(DYNAMIC_CUDA_SUPPORT)
using namespace cvtest; using namespace cvtest;
......
set(the_description "Images stitching") set(the_description "Images stitching")
if (ENABLE_DYNAMIC_CUDA) if(ENABLE_DYNAMIC_CUDA)
add_definitions(-DDYNAMIC_CUDA_SUPPORT)
ocv_define_module(stitching opencv_imgproc opencv_features2d opencv_calib3d opencv_objdetect OPTIONAL opencv_nonfree) ocv_define_module(stitching opencv_imgproc opencv_features2d opencv_calib3d opencv_objdetect OPTIONAL opencv_nonfree)
else() else()
ocv_define_module(stitching opencv_imgproc opencv_features2d opencv_calib3d opencv_objdetect OPTIONAL opencv_gpu opencv_nonfree) ocv_define_module(stitching opencv_imgproc opencv_features2d opencv_calib3d opencv_objdetect OPTIONAL opencv_gpu opencv_nonfree)
......
...@@ -44,11 +44,12 @@ ...@@ -44,11 +44,12 @@
#define __OPENCV_STITCHING_MATCHERS_HPP__ #define __OPENCV_STITCHING_MATCHERS_HPP__
#include "opencv2/core/core.hpp" #include "opencv2/core/core.hpp"
#include "opencv2/core/gpumat.hpp"
#include "opencv2/features2d/features2d.hpp" #include "opencv2/features2d/features2d.hpp"
#include "opencv2/opencv_modules.hpp" #include "opencv2/opencv_modules.hpp"
#if defined(HAVE_OPENCV_NONFREE) && defined(HAVE_OPENCV_GPU) && !defined(ANDROID) #if defined(HAVE_OPENCV_NONFREE)
#include "opencv2/nonfree/gpu.hpp" #include "opencv2/nonfree/gpu.hpp"
#endif #endif
...@@ -104,7 +105,7 @@ private: ...@@ -104,7 +105,7 @@ private:
}; };
#if defined(HAVE_OPENCV_NONFREE) && defined(HAVE_OPENCV_GPU) && !defined(ANDROID) #if defined(HAVE_OPENCV_NONFREE)
class CV_EXPORTS SurfFeaturesFinderGpu : public FeaturesFinder class CV_EXPORTS SurfFeaturesFinderGpu : public FeaturesFinder
{ {
public: public:
......
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
#include <set> #include <set>
#include "opencv2/core/core.hpp" #include "opencv2/core/core.hpp"
#include "opencv2/opencv_modules.hpp" #include "opencv2/core/gpumat.hpp"
namespace cv { namespace cv {
namespace detail { namespace detail {
...@@ -227,7 +227,6 @@ private: ...@@ -227,7 +227,6 @@ private:
}; };
#if defined(HAVE_OPENCV_GPU) && !defined(ANDROID)
class CV_EXPORTS GraphCutSeamFinderGpu : public GraphCutSeamFinderBase, public PairwiseSeamFinder class CV_EXPORTS GraphCutSeamFinderGpu : public GraphCutSeamFinderBase, public PairwiseSeamFinder
{ {
public: public:
...@@ -251,7 +250,6 @@ private: ...@@ -251,7 +250,6 @@ private:
float terminal_cost_; float terminal_cost_;
float bad_region_penalty_; float bad_region_penalty_;
}; };
#endif
} // namespace detail } // namespace detail
} // namespace cv } // namespace cv
......
...@@ -44,11 +44,8 @@ ...@@ -44,11 +44,8 @@
#define __OPENCV_STITCHING_WARPERS_HPP__ #define __OPENCV_STITCHING_WARPERS_HPP__
#include "opencv2/core/core.hpp" #include "opencv2/core/core.hpp"
#include "opencv2/core/gpumat.hpp"
#include "opencv2/imgproc/imgproc.hpp" #include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/opencv_modules.hpp"
#if defined(HAVE_OPENCV_GPU) && !defined(ANDROID)
# include "opencv2/gpu/gpu.hpp"
#endif
namespace cv { namespace cv {
namespace detail { namespace detail {
...@@ -331,7 +328,6 @@ public: ...@@ -331,7 +328,6 @@ public:
}; };
#if defined(HAVE_OPENCV_GPU) && !defined(ANDROID)
class CV_EXPORTS PlaneWarperGpu : public PlaneWarper class CV_EXPORTS PlaneWarperGpu : public PlaneWarper
{ {
public: public:
...@@ -448,7 +444,6 @@ public: ...@@ -448,7 +444,6 @@ public:
private: private:
gpu::GpuMat d_xmap_, d_ymap_, d_src_, d_dst_; gpu::GpuMat d_xmap_, d_ymap_, d_src_, d_dst_;
}; };
#endif
struct SphericalPortraitProjector : ProjectorBase struct SphericalPortraitProjector : ProjectorBase
......
...@@ -145,7 +145,6 @@ public: ...@@ -145,7 +145,6 @@ public:
#if defined(HAVE_OPENCV_GPU) && !defined(ANDROID)
class PlaneWarperGpu: public WarperCreator class PlaneWarperGpu: public WarperCreator
{ {
public: public:
...@@ -165,7 +164,6 @@ class SphericalWarperGpu: public WarperCreator ...@@ -165,7 +164,6 @@ class SphericalWarperGpu: public WarperCreator
public: public:
Ptr<detail::RotationWarper> create(float scale) const { return new detail::SphericalWarperGpu(scale); } Ptr<detail::RotationWarper> create(float scale) const { return new detail::SphericalWarperGpu(scale); }
}; };
#endif
} // namespace cv } // namespace cv
......
...@@ -189,7 +189,7 @@ Rect FeatherBlender::createWeightMaps(const vector<Mat> &masks, const vector<Poi ...@@ -189,7 +189,7 @@ Rect FeatherBlender::createWeightMaps(const vector<Mat> &masks, const vector<Poi
MultiBandBlender::MultiBandBlender(int try_gpu, int num_bands, int weight_type) MultiBandBlender::MultiBandBlender(int try_gpu, int num_bands, int weight_type)
{ {
setNumBands(num_bands); setNumBands(num_bands);
#if defined(HAVE_OPENCV_GPU) && !defined(ANDROID) #if defined(HAVE_OPENCV_GPU) && !defined(DYNAMIC_CUDA_SUPPORT)
can_use_gpu_ = try_gpu && gpu::getCudaEnabledDeviceCount(); can_use_gpu_ = try_gpu && gpu::getCudaEnabledDeviceCount();
#else #else
(void)try_gpu; (void)try_gpu;
...@@ -491,7 +491,7 @@ void createLaplacePyr(const Mat &img, int num_levels, vector<Mat> &pyr) ...@@ -491,7 +491,7 @@ void createLaplacePyr(const Mat &img, int num_levels, vector<Mat> &pyr)
void createLaplacePyrGpu(const Mat &img, int num_levels, vector<Mat> &pyr) void createLaplacePyrGpu(const Mat &img, int num_levels, vector<Mat> &pyr)
{ {
#if defined(HAVE_OPENCV_GPU) && !defined(ANDROID) #if defined(HAVE_OPENCV_GPU) && !defined(DYNAMIC_CUDA_SUPPORT)
pyr.resize(num_levels + 1); pyr.resize(num_levels + 1);
vector<gpu::GpuMat> gpu_pyr(num_levels + 1); vector<gpu::GpuMat> gpu_pyr(num_levels + 1);
...@@ -512,6 +512,7 @@ void createLaplacePyrGpu(const Mat &img, int num_levels, vector<Mat> &pyr) ...@@ -512,6 +512,7 @@ void createLaplacePyrGpu(const Mat &img, int num_levels, vector<Mat> &pyr)
(void)img; (void)img;
(void)num_levels; (void)num_levels;
(void)pyr; (void)pyr;
CV_Error(CV_StsNotImplemented, "CUDA optimization is unavailable");
#endif #endif
} }
...@@ -531,7 +532,7 @@ void restoreImageFromLaplacePyr(vector<Mat> &pyr) ...@@ -531,7 +532,7 @@ void restoreImageFromLaplacePyr(vector<Mat> &pyr)
void restoreImageFromLaplacePyrGpu(vector<Mat> &pyr) void restoreImageFromLaplacePyrGpu(vector<Mat> &pyr)
{ {
#if defined(HAVE_OPENCV_GPU) && !defined(ANDROID) #if defined(HAVE_OPENCV_GPU) && !defined(DYNAMIC_CUDA_SUPPORT)
if (pyr.empty()) if (pyr.empty())
return; return;
...@@ -549,6 +550,7 @@ void restoreImageFromLaplacePyrGpu(vector<Mat> &pyr) ...@@ -549,6 +550,7 @@ void restoreImageFromLaplacePyrGpu(vector<Mat> &pyr)
gpu_pyr[0].download(pyr[0]); gpu_pyr[0].download(pyr[0]);
#else #else
(void)pyr; (void)pyr;
CV_Error(CV_StsNotImplemented, "CUDA optimization is unavailable");
#endif #endif
} }
......
...@@ -45,10 +45,7 @@ ...@@ -45,10 +45,7 @@
using namespace std; using namespace std;
using namespace cv; using namespace cv;
using namespace cv::detail; using namespace cv::detail;
#if defined(HAVE_OPENCV_GPU) && !defined(ANDROID)
using namespace cv::gpu; using namespace cv::gpu;
#endif
#ifdef HAVE_OPENCV_NONFREE #ifdef HAVE_OPENCV_NONFREE
#include "opencv2/nonfree/nonfree.hpp" #include "opencv2/nonfree/nonfree.hpp"
...@@ -129,7 +126,7 @@ private: ...@@ -129,7 +126,7 @@ private:
float match_conf_; float match_conf_;
}; };
#if defined(HAVE_OPENCV_GPU) && !defined(ANDROID) #if defined(HAVE_OPENCV_GPU) && !defined(DYNAMIC_CUDA_SUPPORT)
class GpuMatcher : public FeaturesMatcher class GpuMatcher : public FeaturesMatcher
{ {
public: public:
...@@ -204,7 +201,7 @@ void CpuMatcher::match(const ImageFeatures &features1, const ImageFeatures &feat ...@@ -204,7 +201,7 @@ void CpuMatcher::match(const ImageFeatures &features1, const ImageFeatures &feat
LOG("1->2 & 2->1 matches: " << matches_info.matches.size() << endl); LOG("1->2 & 2->1 matches: " << matches_info.matches.size() << endl);
} }
#if defined(HAVE_OPENCV_GPU) && !defined(ANDROID) #if defined(HAVE_OPENCV_GPU) && !defined(DYNAMIC_CUDA_SUPPORT)
void GpuMatcher::match(const ImageFeatures &features1, const ImageFeatures &features2, MatchesInfo& matches_info) void GpuMatcher::match(const ImageFeatures &features1, const ImageFeatures &features2, MatchesInfo& matches_info)
{ {
matches_info.matches.clear(); matches_info.matches.clear();
...@@ -432,7 +429,7 @@ void OrbFeaturesFinder::find(const Mat &image, ImageFeatures &features) ...@@ -432,7 +429,7 @@ void OrbFeaturesFinder::find(const Mat &image, ImageFeatures &features)
} }
} }
#if defined(HAVE_OPENCV_NONFREE) && defined(HAVE_OPENCV_GPU) && !defined(ANDROID) #if defined(HAVE_OPENCV_NONFREE) && defined(HAVE_OPENCV_GPU) && !defined(DYNAMIC_CUDA_SUPPORT)
SurfFeaturesFinderGpu::SurfFeaturesFinderGpu(double hess_thresh, int num_octaves, int num_layers, SurfFeaturesFinderGpu::SurfFeaturesFinderGpu(double hess_thresh, int num_octaves, int num_layers,
int num_octaves_descr, int num_layers_descr) int num_octaves_descr, int num_layers_descr)
{ {
...@@ -478,6 +475,29 @@ void SurfFeaturesFinderGpu::collectGarbage() ...@@ -478,6 +475,29 @@ void SurfFeaturesFinderGpu::collectGarbage()
keypoints_.release(); keypoints_.release();
descriptors_.release(); descriptors_.release();
} }
#elif defined(HAVE_OPENCV_NONFREE)
SurfFeaturesFinderGpu::SurfFeaturesFinderGpu(double hess_thresh, int num_octaves, int num_layers,
int num_octaves_descr, int num_layers_descr)
{
(void)hess_thresh;
(void)num_octaves;
(void)num_layers;
(void)num_octaves_descr;
(void)num_layers_descr;
CV_Error(CV_StsNotImplemented, "CUDA optimization is unavailable");
}
void SurfFeaturesFinderGpu::find(const Mat &image, ImageFeatures &features)
{
(void)image;
(void)features;
CV_Error(CV_StsNotImplemented, "CUDA optimization is unavailable");
}
void SurfFeaturesFinderGpu::collectGarbage()
{
}
#endif #endif
...@@ -533,7 +553,7 @@ void FeaturesMatcher::operator ()(const vector<ImageFeatures> &features, vector< ...@@ -533,7 +553,7 @@ void FeaturesMatcher::operator ()(const vector<ImageFeatures> &features, vector<
BestOf2NearestMatcher::BestOf2NearestMatcher(bool try_use_gpu, float match_conf, int num_matches_thresh1, int num_matches_thresh2) BestOf2NearestMatcher::BestOf2NearestMatcher(bool try_use_gpu, float match_conf, int num_matches_thresh1, int num_matches_thresh2)
{ {
#if defined(HAVE_OPENCV_GPU) && !defined(ANDROID) #if defined(HAVE_OPENCV_GPU) && !defined(DYNAMIC_CUDA_SUPPORT)
if (try_use_gpu && getCudaEnabledDeviceCount() > 0) if (try_use_gpu && getCudaEnabledDeviceCount() > 0)
impl_ = new GpuMatcher(match_conf); impl_ = new GpuMatcher(match_conf);
else else
......
...@@ -68,7 +68,7 @@ ...@@ -68,7 +68,7 @@
#include "opencv2/imgproc/imgproc.hpp" #include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/features2d/features2d.hpp" #include "opencv2/features2d/features2d.hpp"
#include "opencv2/calib3d/calib3d.hpp" #include "opencv2/calib3d/calib3d.hpp"
#if defined(HAVE_OPENCV_GPU) && !defined(ANDROID) #if defined(HAVE_OPENCV_GPU) && !defined(DYNAMIC_CUDA_SUPPORT)
#include "opencv2/gpu/gpu.hpp" #include "opencv2/gpu/gpu.hpp"
#ifdef HAVE_OPENCV_NONFREE #ifdef HAVE_OPENCV_NONFREE
......
...@@ -1318,7 +1318,7 @@ void GraphCutSeamFinder::find(const vector<Mat> &src, const vector<Point> &corne ...@@ -1318,7 +1318,7 @@ void GraphCutSeamFinder::find(const vector<Mat> &src, const vector<Point> &corne
} }
#if defined(HAVE_OPENCV_GPU) && !defined(ANDROID) #if defined(HAVE_OPENCV_GPU) && !defined(DYNAMIC_CUDA_SUPPORT)
void GraphCutSeamFinderGpu::find(const vector<Mat> &src, const vector<Point> &corners, void GraphCutSeamFinderGpu::find(const vector<Mat> &src, const vector<Point> &corners,
vector<Mat> &masks) vector<Mat> &masks)
{ {
...@@ -1642,6 +1642,62 @@ void GraphCutSeamFinderGpu::setGraphWeightsColorGrad( ...@@ -1642,6 +1642,62 @@ void GraphCutSeamFinderGpu::setGraphWeightsColorGrad(
} }
} }
} }
#else
void GraphCutSeamFinderGpu::find(const vector<Mat> &src, const vector<Point> &corners,
vector<Mat> &masks)
{
(void)src;
(void)corners;
(void)masks;
CV_Error(CV_StsNotImplemented, "CUDA optimization is unavailable");
}
void GraphCutSeamFinderGpu::findInPair(size_t first, size_t second, Rect roi)
{
(void)first;
(void)second;
(void)roi;
CV_Error(CV_StsNotImplemented, "CUDA optimization is unavailable");
}
void GraphCutSeamFinderGpu::setGraphWeightsColor(const Mat &img1, const Mat &img2, const Mat &mask1, const Mat &mask2,
Mat &terminals, Mat &leftT, Mat &rightT, Mat &top, Mat &bottom)
{
(void)img1;
(void)img2;
(void)mask1;
(void)mask2;
(void)terminals;
(void)leftT;
(void)rightT;
(void)top;
(void)bottom;
CV_Error(CV_StsNotImplemented, "CUDA optimization is unavailable");
}
void GraphCutSeamFinderGpu::setGraphWeightsColorGrad(
const Mat &img1, const Mat &img2, const Mat &dx1, const Mat &dx2,
const Mat &dy1, const Mat &dy2, const Mat &mask1, const Mat &mask2,
Mat &terminals, Mat &leftT, Mat &rightT, Mat &top, Mat &bottom)
{
(void)img1;
(void)img2;
(void)dx1;
(void)dx2;
(void)dy1;
(void)dy2;
(void)mask1;
(void)mask2;
(void)terminals;
(void)leftT;
(void)rightT;
(void)top;
(void)bottom;
CV_Error(CV_StsNotImplemented, "CUDA optimization is unavailable");
}
#endif #endif
} // namespace detail } // namespace detail
......
...@@ -58,7 +58,7 @@ Stitcher Stitcher::createDefault(bool try_use_gpu) ...@@ -58,7 +58,7 @@ Stitcher Stitcher::createDefault(bool try_use_gpu)
stitcher.setFeaturesMatcher(new detail::BestOf2NearestMatcher(try_use_gpu)); stitcher.setFeaturesMatcher(new detail::BestOf2NearestMatcher(try_use_gpu));
stitcher.setBundleAdjuster(new detail::BundleAdjusterRay()); stitcher.setBundleAdjuster(new detail::BundleAdjusterRay());
#if defined(HAVE_OPENCV_GPU) && !defined(ANDROID) #if defined(HAVE_OPENCV_GPU) && !defined(DYNAMIC_CUDA_SUPPORT)
if (try_use_gpu && gpu::getCudaEnabledDeviceCount() > 0) if (try_use_gpu && gpu::getCudaEnabledDeviceCount() > 0)
{ {
#if defined(HAVE_OPENCV_NONFREE) #if defined(HAVE_OPENCV_NONFREE)
......
...@@ -212,7 +212,7 @@ void SphericalWarper::detectResultRoi(Size src_size, Point &dst_tl, Point &dst_b ...@@ -212,7 +212,7 @@ void SphericalWarper::detectResultRoi(Size src_size, Point &dst_tl, Point &dst_b
} }
#if defined(HAVE_OPENCV_GPU) && !defined(ANDROID) #if defined(HAVE_OPENCV_GPU) && !defined(DYNAMIC_CUDA_SUPPORT)
Rect PlaneWarperGpu::buildMaps(Size src_size, const Mat &K, const Mat &R, gpu::GpuMat &xmap, gpu::GpuMat &ymap) Rect PlaneWarperGpu::buildMaps(Size src_size, const Mat &K, const Mat &R, gpu::GpuMat &xmap, gpu::GpuMat &ymap)
{ {
return buildMaps(src_size, K, R, Mat::zeros(3, 1, CV_32F), xmap, ymap); return buildMaps(src_size, K, R, Mat::zeros(3, 1, CV_32F), xmap, ymap);
...@@ -294,6 +294,96 @@ Point CylindricalWarperGpu::warp(const gpu::GpuMat &src, const Mat &K, const Mat ...@@ -294,6 +294,96 @@ Point CylindricalWarperGpu::warp(const gpu::GpuMat &src, const Mat &K, const Mat
gpu::remap(src, dst, d_xmap_, d_ymap_, interp_mode, border_mode); gpu::remap(src, dst, d_xmap_, d_ymap_, interp_mode, border_mode);
return dst_roi.tl(); return dst_roi.tl();
} }
#else
Rect PlaneWarperGpu::buildMaps(Size src_size, const Mat &K, const Mat &R, gpu::GpuMat &xmap, gpu::GpuMat &ymap)
{
return buildMaps(src_size, K, R, Mat::zeros(3, 1, CV_32F), xmap, ymap);
}
Rect PlaneWarperGpu::buildMaps(Size src_size, const Mat &K, const Mat &R, const Mat &T, gpu::GpuMat &xmap, gpu::GpuMat &ymap)
{
(void)src_size;
(void)K;
(void)R;
(void)T;
(void)xmap;
(void)ymap;
CV_Error(CV_StsNotImplemented, "CUDA optimization is unavailable");
return Rect();
}
Point PlaneWarperGpu::warp(const gpu::GpuMat &src, const Mat &K, const Mat &R, int interp_mode, int border_mode,
gpu::GpuMat &dst)
{
return warp(src, K, R, Mat::zeros(3, 1, CV_32F), interp_mode, border_mode, dst);
}
Point PlaneWarperGpu::warp(const gpu::GpuMat &src, const Mat &K, const Mat &R, const Mat &T, int interp_mode, int border_mode,
gpu::GpuMat &dst)
{
(void)src;
(void)K;
(void)R;
(void)T;
(void)interp_mode;
(void)border_mode;
(void)dst;
CV_Error(CV_StsNotImplemented, "CUDA optimization is unavailable");
return Point();
}
Rect SphericalWarperGpu::buildMaps(Size src_size, const Mat &K, const Mat &R, gpu::GpuMat &xmap, gpu::GpuMat &ymap)
{
(void)src_size;
(void)K;
(void)R;
(void)xmap;
(void)ymap;
CV_Error(CV_StsNotImplemented, "CUDA optimization is unavailable");
return Rect();
}
Point SphericalWarperGpu::warp(const gpu::GpuMat &src, const Mat &K, const Mat &R, int interp_mode, int border_mode,
gpu::GpuMat &dst)
{
(void)src;
(void)K;
(void)R;
(void)interp_mode;
(void)border_mode;
(void)dst;
CV_Error(CV_StsNotImplemented, "CUDA optimization is unavailable");
return Point();
}
Rect CylindricalWarperGpu::buildMaps(Size src_size, const Mat &K, const Mat &R, gpu::GpuMat &xmap, gpu::GpuMat &ymap)
{
(void)src_size;
(void)K;
(void)R;
(void)xmap;
(void)ymap;
CV_Error(CV_StsNotImplemented, "CUDA optimization is unavailable");
return Rect();
}
Point CylindricalWarperGpu::warp(const gpu::GpuMat &src, const Mat &K, const Mat &R, int interp_mode, int border_mode,
gpu::GpuMat &dst)
{
(void)src;
(void)K;
(void)R;
(void)interp_mode;
(void)border_mode;
(void)dst;
CV_Error(CV_StsNotImplemented, "CUDA optimization is unavailable");
return Point();
}
#endif #endif
void SphericalPortraitWarper::detectResultRoi(Size src_size, Point &dst_tl, Point &dst_br) void SphericalPortraitWarper::detectResultRoi(Size src_size, Point &dst_tl, Point &dst_br)
......
...@@ -355,7 +355,7 @@ int main(int argc, char* argv[]) ...@@ -355,7 +355,7 @@ int main(int argc, char* argv[])
Ptr<FeaturesFinder> finder; Ptr<FeaturesFinder> finder;
if (features_type == "surf") if (features_type == "surf")
{ {
#if defined(HAVE_OPENCV_NONFREE) && defined(HAVE_OPENCV_GPU) && !defined(ANDROID) #if defined(HAVE_OPENCV_NONFREE) && defined(HAVE_OPENCV_GPU)
if (try_gpu && gpu::getCudaEnabledDeviceCount() > 0) if (try_gpu && gpu::getCudaEnabledDeviceCount() > 0)
finder = new SurfFeaturesFinderGpu(); finder = new SurfFeaturesFinderGpu();
else else
...@@ -543,7 +543,7 @@ int main(int argc, char* argv[]) ...@@ -543,7 +543,7 @@ int main(int argc, char* argv[])
// Warp images and their masks // Warp images and their masks
Ptr<WarperCreator> warper_creator; Ptr<WarperCreator> warper_creator;
#if defined(HAVE_OPENCV_GPU) && !defined(ANDROID) #if defined(HAVE_OPENCV_GPU)
if (try_gpu && gpu::getCudaEnabledDeviceCount() > 0) if (try_gpu && gpu::getCudaEnabledDeviceCount() > 0)
{ {
if (warp_type == "plane") warper_creator = new cv::PlaneWarperGpu(); if (warp_type == "plane") warper_creator = new cv::PlaneWarperGpu();
...@@ -608,7 +608,7 @@ int main(int argc, char* argv[]) ...@@ -608,7 +608,7 @@ int main(int argc, char* argv[])
seam_finder = new detail::VoronoiSeamFinder(); seam_finder = new detail::VoronoiSeamFinder();
else if (seam_find_type == "gc_color") else if (seam_find_type == "gc_color")
{ {
#if defined(HAVE_OPENCV_GPU) && !defined(ANDROID) #if defined(HAVE_OPENCV_GPU)
if (try_gpu && gpu::getCudaEnabledDeviceCount() > 0) if (try_gpu && gpu::getCudaEnabledDeviceCount() > 0)
seam_finder = new detail::GraphCutSeamFinderGpu(GraphCutSeamFinderBase::COST_COLOR); seam_finder = new detail::GraphCutSeamFinderGpu(GraphCutSeamFinderBase::COST_COLOR);
else else
...@@ -617,7 +617,7 @@ int main(int argc, char* argv[]) ...@@ -617,7 +617,7 @@ int main(int argc, char* argv[])
} }
else if (seam_find_type == "gc_colorgrad") else if (seam_find_type == "gc_colorgrad")
{ {
#if defined(HAVE_OPENCV_GPU) && !defined(ANDROID) #if defined(HAVE_OPENCV_GPU)
if (try_gpu && gpu::getCudaEnabledDeviceCount() > 0) if (try_gpu && gpu::getCudaEnabledDeviceCount() > 0)
seam_finder = new detail::GraphCutSeamFinderGpu(GraphCutSeamFinderBase::COST_COLOR_GRAD); seam_finder = new detail::GraphCutSeamFinderGpu(GraphCutSeamFinderBase::COST_COLOR_GRAD);
else else
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment