GpuMat::Allocator* allocator_;
};
+ CV_EXPORTS GpuMat getInputMat(InputArray _src, Stream& stream);
+
+ CV_EXPORTS GpuMat getOutputMat(OutputArray _dst, int rows, int cols, int type, Stream& stream);
+ static inline GpuMat getOutputMat(OutputArray _dst, Size size, int type, Stream& stream)
+ {
+ return getOutputMat(_dst, size.height, size.width, type, stream);
+ }
+
+ CV_EXPORTS void syncOutput(const GpuMat& dst, OutputArray _dst, Stream& stream);
+
static inline void checkNppError(int code, const char* file, const int line, const char* func)
{
if (code < 0)
}
}
+GpuMat cv::cuda::getInputMat(InputArray _src, Stream& stream)
+{
+ GpuMat src;
+
+ if (_src.kind() == _InputArray::CUDA_GPU_MAT)
+ {
+ src = _src.getGpuMat();
+ }
+ else if (!_src.empty())
+ {
+ BufferPool pool(stream);
+ src = pool.getBuffer(_src.size(), _src.type());
+ src.upload(_src, stream);
+ }
+
+ return src;
+}
+
+GpuMat cv::cuda::getOutputMat(OutputArray _dst, int rows, int cols, int type, Stream& stream)
+{
+ GpuMat dst;
+
+ if (_dst.kind() == _InputArray::CUDA_GPU_MAT)
+ {
+ _dst.create(rows, cols, type);
+ dst = _dst.getGpuMat();
+ }
+ else
+ {
+ BufferPool pool(stream);
+ dst = pool.getBuffer(rows, cols, type);
+ }
+
+ return dst;
+}
+
+void cv::cuda::syncOutput(const GpuMat& dst, OutputArray _dst, Stream& stream)
+{
+ if (_dst.kind() != _InputArray::CUDA_GPU_MAT)
+ {
+ if (stream)
+ dst.download(_dst, stream);
+ else
+ dst.download(_dst);
+ }
+}
+
#ifndef HAVE_CUDA
GpuMat::Allocator* cv::cuda::GpuMat::defaultAllocator()