diff --git a/modules/gpu/include/opencv2/gpu/gpu.hpp b/modules/gpu/include/opencv2/gpu/gpu.hpp index afbe067a3e..a9481b2812 100644 --- a/modules/gpu/include/opencv2/gpu/gpu.hpp +++ b/modules/gpu/include/opencv2/gpu/gpu.hpp @@ -815,6 +815,10 @@ struct CV_EXPORTS CannyBuf GpuMat st1, st2; GpuMat unused; Ptr filterDX, filterDY; + + CannyBuf() {} + explicit CannyBuf(const Size& image_size, int apperture_size = 3) {create(image_size, apperture_size);} + CannyBuf(const GpuMat& dx_, const GpuMat& dy_); }; CV_EXPORTS void Canny(const GpuMat& image, GpuMat& edges, double low_thresh, double high_thresh, int apperture_size = 3, bool L2gradient = false); @@ -1879,11 +1883,9 @@ private: vector prevPyr_; vector nextPyr_; GpuMat vPyr_[2]; - vector unused1; - vector unused2; - bool unused3; - - GpuMat buf_; + vector buf_; + vector unused; + bool isDeviceArch11_; }; diff --git a/modules/gpu/src/imgproc.cpp b/modules/gpu/src/imgproc.cpp index 24f015ba7c..3184717185 100644 --- a/modules/gpu/src/imgproc.cpp +++ b/modules/gpu/src/imgproc.cpp @@ -45,6 +45,9 @@ using namespace cv; using namespace cv::gpu; +/*stub for deprecated constructor*/ +cv::gpu::CannyBuf::CannyBuf(const GpuMat&, const GpuMat&) { } + #if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) void cv::gpu::meanShiftFiltering(const GpuMat&, GpuMat&, int, int, TermCriteria, Stream&) { throw_nogpu(); } diff --git a/modules/gpu/src/pyrlk.cpp b/modules/gpu/src/pyrlk.cpp index 49a6c5a88c..148bcb5dd9 100644 --- a/modules/gpu/src/pyrlk.cpp +++ b/modules/gpu/src/pyrlk.cpp @@ -147,11 +147,13 @@ void cv::gpu::PyrLKOpticalFlow::sparse(const GpuMat& prevImg, const GpuMat& next } else { - cvtColor(prevImg, buf_, COLOR_BGR2BGRA); - buf_.convertTo(prevPyr_[0], CV_32F); + buf_.resize(1); - cvtColor(nextImg, buf_, COLOR_BGR2BGRA); - buf_.convertTo(nextPyr_[0], CV_32F); + cvtColor(prevImg, buf_[0], COLOR_BGR2BGRA); + buf_[0].convertTo(prevPyr_[0], CV_32F); + + cvtColor(nextImg, buf_[0], COLOR_BGR2BGRA); + buf_[0].convertTo(nextPyr_[0], CV_32F); } for (int level = 1; level <= maxLevel; ++level) @@ -237,7 +239,7 @@ void cv::gpu::PyrLKOpticalFlow::releaseMemory() prevPyr_.clear(); nextPyr_.clear(); - buf_.release(); + buf_.clear(); uPyr_[0].release(); vPyr_[0].release(); diff --git a/modules/ocl/include/opencv2/ocl/ocl.hpp b/modules/ocl/include/opencv2/ocl/ocl.hpp index fcaff4e549..a60eb36302 100644 --- a/modules/ocl/include/opencv2/ocl/ocl.hpp +++ b/modules/ocl/include/opencv2/ocl/ocl.hpp @@ -102,7 +102,7 @@ namespace cv //this function enable ocl module to use customized cl_context and cl_command_queue //getDevice also need to be called before this function - CV_EXPORTS void setDeviceEx(Info &oclinfo, void *ctx, void *qu, int devnum = 0); + CV_EXPORTS void setDeviceEx(Info &oclinfo, void *ctx, void *qu, int devnum = 0); //////////////////////////////// Error handling //////////////////////// CV_EXPORTS void error(const char *error_string, const char *file, const int line, const char *func); @@ -126,21 +126,21 @@ namespace cv }; //! Calls a kernel, by string. Pass globalThreads = NULL, and cleanUp = true, to finally clean-up without executing. - CV_EXPORTS double openCLExecuteKernelInterop(Context *clCxt , + CV_EXPORTS double openCLExecuteKernelInterop(Context *clCxt , const char **source, string kernelName, size_t globalThreads[3], size_t localThreads[3], - std::vector< std::pair > &args, - int channels, int depth, const char *build_options, - bool finish = true, bool measureKernelTime = false, + std::vector< std::pair > &args, + int channels, int depth, const char *build_options, + bool finish = true, bool measureKernelTime = false, bool cleanUp = true); //! Calls a kernel, by file. Pass globalThreads = NULL, and cleanUp = true, to finally clean-up without executing. - CV_EXPORTS double openCLExecuteKernelInterop(Context *clCxt , + CV_EXPORTS double openCLExecuteKernelInterop(Context *clCxt , const char **fileName, const int numFiles, string kernelName, size_t globalThreads[3], size_t localThreads[3], - std::vector< std::pair > &args, - int channels, int depth, const char *build_options, - bool finish = true, bool measureKernelTime = false, + std::vector< std::pair > &args, + int channels, int depth, const char *build_options, + bool finish = true, bool measureKernelTime = false, bool cleanUp = true); class CV_EXPORTS oclMatExpr; @@ -487,21 +487,22 @@ namespace cv CV_EXPORTS void bitwise_xor(const oclMat &src1, const Scalar &s, oclMat &dst, const oclMat &mask = oclMat()); //! Logical operators - CV_EXPORTS oclMatExpr operator ~ (const oclMat &src); - CV_EXPORTS oclMatExpr operator | (const oclMat &src1, const oclMat &src2); - CV_EXPORTS oclMatExpr operator & (const oclMat &src1, const oclMat &src2); - CV_EXPORTS oclMatExpr operator ^ (const oclMat &src1, const oclMat &src2); + CV_EXPORTS oclMat operator ~ (const oclMat &); + CV_EXPORTS oclMat operator | (const oclMat &, const oclMat &); + CV_EXPORTS oclMat operator & (const oclMat &, const oclMat &); + CV_EXPORTS oclMat operator ^ (const oclMat &, const oclMat &); + //! Mathematics operators CV_EXPORTS oclMatExpr operator + (const oclMat &src1, const oclMat &src2); CV_EXPORTS oclMatExpr operator - (const oclMat &src1, const oclMat &src2); CV_EXPORTS oclMatExpr operator * (const oclMat &src1, const oclMat &src2); CV_EXPORTS oclMatExpr operator / (const oclMat &src1, const oclMat &src2); - + //! computes convolution of two images //! support only CV_32FC1 type CV_EXPORTS void convolve(const oclMat &image, const oclMat &temp1, oclMat &result); - + CV_EXPORTS void cvtColor(const oclMat &src, oclMat &dst, int code , int dcn = 0); //////////////////////////////// Filter Engine //////////////////////////////// diff --git a/modules/ocl/src/arithm.cpp b/modules/ocl/src/arithm.cpp index 099d07980d..c4eb0041d9 100644 --- a/modules/ocl/src/arithm.cpp +++ b/modules/ocl/src/arithm.cpp @@ -2125,22 +2125,22 @@ void cv::ocl::bitwise_xor(const oclMat &src1, const Scalar &src2, oclMat &dst, c bitwise_scalar( src1, src2, dst, mask, kernelName, &arithm_bitwise_xor_scalar); } -oclMatExpr cv::ocl::operator ~ (const oclMat &src) +oclMat cv::ocl::operator ~ (const oclMat &src) { return oclMatExpr(src, oclMat(), MAT_NOT); } -oclMatExpr cv::ocl::operator | (const oclMat &src1, const oclMat &src2) +oclMat cv::ocl::operator | (const oclMat &src1, const oclMat &src2) { return oclMatExpr(src1, src2, MAT_OR); } -oclMatExpr cv::ocl::operator & (const oclMat &src1, const oclMat &src2) +oclMat cv::ocl::operator & (const oclMat &src1, const oclMat &src2) { return oclMatExpr(src1, src2, MAT_AND); } -oclMatExpr cv::ocl::operator ^ (const oclMat &src1, const oclMat &src2) +oclMat cv::ocl::operator ^ (const oclMat &src1, const oclMat &src2) { return oclMatExpr(src1, src2, MAT_XOR); }