static void finalizeHdr(UMat& m) { updateContinuityFlag(m); int d = m.dims; if( d > 2 ) m.rows = m.cols = -1; }
void finalizeHdr(Mat& m) { updateContinuityFlag(m); int d = m.dims; if( d > 2 ) m.rows = m.cols = -1; if(m.u) m.datastart = m.data = m.u->data; if( m.data ) { m.datalimit = m.datastart + m.size[0]*m.step[0]; if( m.size[0] > 0 ) { m.dataend = m.ptr() + m.size[d-1]*m.step[d-1]; for( int i = 0; i < d-1; i++ ) m.dataend += (m.size[i] - 1)*m.step[i]; } else m.dataend = m.datalimit; } else m.dataend = m.datalimit = 0; }
UMat::UMat(const UMat& m, const Range* ranges) : flags(MAGIC_VAL), dims(0), rows(0), cols(0), allocator(0), u(0), offset(0), size(&rows) { int i, d = m.dims; CV_Assert(ranges); for( i = 0; i < d; i++ ) { Range r = ranges[i]; CV_Assert( r == Range::all() || (0 <= r.start && r.start < r.end && r.end <= m.size[i]) ); } *this = m; for( i = 0; i < d; i++ ) { Range r = ranges[i]; if( r != Range::all() && r != Range(0, size.p[i])) { size.p[i] = r.end - r.start; offset += r.start*step.p[i]; flags |= SUBMATRIX_FLAG; } } updateContinuityFlag(*this); }