if (esz * cols == step)
flags |= Mat::CONTINUOUS_FLAG;
- int64 _nettosize = static_cast<int64>(step) * rows;
- size_t nettosize = static_cast<size_t>(_nettosize);
-
datastart = data;
- dataend = data + nettosize;
+ dataend = data + step * (rows - 1) + cols * esz;
if (refcount)
*refcount = 1;
// GpuMat create
cv::cuda::GpuMat createMat(cv::Size size, int type, bool useRoi = false);
+ cv::cuda::GpuMat createMat(cv::Size size, int type, cv::Size& size0, cv::Point& ofs, bool useRoi = false);
cv::cuda::GpuMat loadMat(const cv::Mat& m, bool useRoi = false);
//////////////////////////////////////////////////////////////////////
GpuMat createMat(Size size, int type, bool useRoi)
{
- Size size0 = size;
+ Size size0; Point ofs;
+ return createMat(size, type, size0, ofs, useRoi);
+ }
+
+ GpuMat createMat(Size size, int type, Size& size0, Point& ofs, bool useRoi)
+ {
+ size0 = size;
if (useRoi)
{
}
GpuMat d_m(size0, type);
-
- if (size0 != size)
- d_m = d_m(Rect((size0.width - size.width) / 2, (size0.height - size.height) / 2, size.width, size.height));
+ if (size0 != size) {
+ ofs = Point((size0.width - size.width) / 2, (size0.height - size.height) / 2);
+ d_m = d_m(Rect(ofs, size));
+ }
return d_m;
}