int* refcount;
//! helper fields used in locateROI and adjustROI
- uchar* datastart;
- uchar* dataend;
+ const uchar* datastart;
+ const uchar* dataend;
//! allocator
Allocator* allocator;
uchar* data;
int* refcount;
- uchar* datastart;
- uchar* dataend;
+ const uchar* datastart;
+ const uchar* dataend;
AllocType alloc_type;
};
struct CV_EXPORTS UMatDataAutoLock
{
- UMatDataAutoLock(UMatData* u);
+ explicit UMatDataAutoLock(UMatData* u);
~UMatDataAutoLock();
UMatData* u;
};
struct CV_EXPORTS MatSize
{
- MatSize(int* _p);
+ explicit MatSize(int* _p);
Size operator()() const;
const int& operator[](int i) const;
int& operator[](int i);
struct CV_EXPORTS MatStep
{
MatStep();
- MatStep(size_t s);
+ explicit MatStep(size_t s);
const size_t& operator[](int i) const;
size_t& operator[](int i);
operator size_t() const;
uchar* data;
//! helper fields used in locateROI and adjustROI
- uchar* datastart;
- uchar* dataend;
- uchar* datalimit;
+ const uchar* datastart;
+ const uchar* dataend;
+ const uchar* datalimit;
//! custom allocator
MatAllocator* allocator;
//! copy operator
MatConstIterator& operator = (const MatConstIterator& it);
//! returns the current matrix element
- uchar* operator *() const;
+ const uchar* operator *() const;
//! returns the i-th matrix element, relative to the current
- uchar* operator [](ptrdiff_t i) const;
+ const uchar* operator [](ptrdiff_t i) const;
//! shifts the iterator forward by the specified number of elements
MatConstIterator& operator += (ptrdiff_t ofs);
const Mat* m;
size_t elemSize;
- uchar* ptr;
- uchar* sliceStart;
- uchar* sliceEnd;
+ const uchar* ptr;
+ const uchar* sliceStart;
+ const uchar* sliceEnd;
};
//! constructor that sets the iterator to the specified element of the matrix
MatIterator_(Mat_<_Tp>* _m, int _row, int _col=0);
//! constructor that sets the iterator to the specified element of the matrix
- MatIterator_(const Mat_<_Tp>* _m, Point _pt);
+ MatIterator_(Mat_<_Tp>* _m, Point _pt);
//! constructor that sets the iterator to the specified element of the matrix
- MatIterator_(const Mat_<_Tp>* _m, const int* _idx);
+ MatIterator_(Mat_<_Tp>* _m, const int* _idx);
//! copy constructor
MatIterator_(const MatIterator_& it);
//! copy operator
if( !copyData )
{
step[0] = step[1] = sizeof(_Tp);
- data = datastart = (uchar*)&vec[0];
+ datastart = data = (uchar*)&vec[0];
datalimit = dataend = datastart + rows * step[0];
}
else
if( !copyData )
{
step[0] = step[1] = sizeof(_Tp);
- data = datastart = (uchar*)vec.val;
+ datastart = data = (uchar*)vec.val;
datalimit = dataend = datastart + rows * step[0];
}
else
{
step[0] = cols * sizeof(_Tp);
step[1] = sizeof(_Tp);
- data = datastart = (uchar*)M.val;
+ datastart = data = (uchar*)M.val;
datalimit = dataend = datastart + rows * step[0];
}
else
if( !copyData )
{
step[0] = step[1] = sizeof(_Tp);
- data = datastart = (uchar*)&pt.x;
+ datastart = data = (uchar*)&pt.x;
datalimit = dataend = datastart + rows * step[0];
}
else
if( u && CV_XADD(&u->refcount, -1) == 1 )
deallocate();
u = NULL;
- data = datastart = dataend = datalimit = 0;
+ datastart = dataend = datalimit = data = 0;
size.p[0] = 0;
}
}
inline
-uchar* MatConstIterator::operator *() const
+const uchar* MatConstIterator::operator *() const
{
return ptr;
}
inline
-uchar* MatConstIterator::operator [](ptrdiff_t i) const
+const uchar* MatConstIterator::operator [](ptrdiff_t i) const
{
return *(*this + i);
}
{}
template<typename _Tp> inline
-MatIterator_<_Tp>::MatIterator_(const Mat_<_Tp>* _m, Point _pt)
+MatIterator_<_Tp>::MatIterator_(Mat_<_Tp>* _m, Point _pt)
: MatConstIterator_<_Tp>(_m, _pt)
{}
template<typename _Tp> inline
-MatIterator_<_Tp>::MatIterator_(const Mat_<_Tp>* _m, const int* _idx)
+MatIterator_<_Tp>::MatIterator_(Mat_<_Tp>* _m, const int* _idx)
: MatConstIterator_<_Tp>(_m, _idx)
{}
template<typename _Tp> inline
const _Tp& SparseMatConstIterator::value() const
{
- return *(_Tp*)ptr;
+ return *(const _Tp*)ptr;
}
inline
for( i = 0; i < nonzero_rows; i++ )
{
- uchar* sptr = src.data + i*src.step;
- uchar* dptr0 = dst.data + i*dst.step;
+ const uchar* sptr = src.ptr(i);
+ uchar* dptr0 = dst.ptr(i);
uchar* dptr = dptr0;
if( tmp_buf )
for( ; i < count; i++ )
{
- uchar* dptr0 = dst.data + i*dst.step;
+ uchar* dptr0 = dst.ptr(i);
memset( dptr0, 0, dst_full_len );
}
{
int a = 0, b = count;
uchar *buf0, *buf1, *dbuf0, *dbuf1;
- uchar* sptr0 = src.data;
+ const uchar* sptr0 = src.data;
uchar* dptr0 = dst.data;
buf0 = ptr;
ptr += len*complex_elem_size;
int n = dst.cols;
if( elem_size == (int)sizeof(float) )
{
- float* p0 = (float*)dst.data;
+ float* p0 = dst.ptr<float>();
size_t dstep = dst.step/sizeof(p0[0]);
for( i = 0; i < len; i++ )
{
}
else
{
- double* p0 = (double*)dst.data;
+ double* p0 = dst.ptr<double>();
size_t dstep = dst.step/sizeof(p0[0]);
for( i = 0; i < len; i++ )
{
SVD::compute(src, w, u, vt);
SVD::backSubst(w, u, vt, Mat(), _dst);
return type == CV_32F ?
- (((float*)w.data)[0] >= FLT_EPSILON ?
- ((float*)w.data)[n-1]/((float*)w.data)[0] : 0) :
- (((double*)w.data)[0] >= DBL_EPSILON ?
- ((double*)w.data)[n-1]/((double*)w.data)[0] : 0);
+ (w.ptr<float>()[0] >= FLT_EPSILON ?
+ w.ptr<float>()[n-1]/w.ptr<float>()[0] : 0) :
+ (w.ptr<double>()[0] >= DBL_EPSILON ?
+ w.ptr<double>()[n-1]/w.ptr<double>()[0] : 0);
}
CV_Assert( m == n );
transpose(vt, u);
SVD::backSubst(w, u, vt, Mat(), _dst);
return type == CV_32F ?
- (((float*)w.data)[0] >= FLT_EPSILON ?
- ((float*)w.data)[n-1]/((float*)w.data)[0] : 0) :
- (((double*)w.data)[0] >= DBL_EPSILON ?
- ((double*)w.data)[n-1]/((double*)w.data)[0] : 0);
+ (w.ptr<float>()[0] >= FLT_EPSILON ?
+ w.ptr<float>()[n-1]/w.ptr<float>()[0] : 0) :
+ (w.ptr<double>()[0] >= DBL_EPSILON ?
+ w.ptr<double>()[n-1]/w.ptr<double>()[0] : 0);
}
CV_Assert( method == DECOMP_LU || method == DECOMP_CHOLESKY );
if( n <= 3 )
{
- uchar* srcdata = src.data;
+ const uchar* srcdata = src.data;
uchar* dstdata = dst.data;
size_t srcstep = src.step;
size_t dststep = dst.step;
#define bf(y) ((float*)(bdata + y*src2step))[0]
#define bd(y) ((double*)(bdata + y*src2step))[0]
- uchar* srcdata = src.data;
- uchar* bdata = _src2.data;
+ const uchar* srcdata = src.data;
+ const uchar* bdata = _src2.data;
uchar* dstdata = dst.data;
size_t srcstep = src.step;
size_t src2step = _src2.step;
eigen(src, evals, evects);
if( evects0.data != evects.data )
{
- uchar* p = evects0.data;
+ const uchar* p = evects0.data;
evects.convertTo(evects0, evects0.type());
CV_Assert( p == evects0.data );
}
eigen(src, evals);
if( evals0.data != evals.data )
{
- uchar* p = evals0.data;
+ const uchar* p = evals0.data;
if( evals0.size() == evals.size() )
evals.convertTo(evals0, evals0.type());
else if( evals0.type() == evals.type() )
if( d > 2 )
m.rows = m.cols = -1;
if(m.u)
- m.data = m.datastart = m.u->data;
+ m.datastart = m.data = m.u->data;
if( m.data )
{
m.datalimit = m.datastart + m.size[0]*m.step[0];
datalimit(0), allocator(0), u(0), size(&rows)
{
flags |= CV_MAT_TYPE(_type);
- data = datastart = (uchar*)_data;
+ datastart = data = (uchar*)_data;
setSize(*this, _dims, _sizes, _steps, true);
finalizeHdr(*this);
}
if( !m )
return thiz;
- thiz.data = thiz.datastart = m->data.ptr;
+ thiz.datastart = thiz.data = m->data.ptr;
thiz.flags |= CV_MAT_TYPE(m->type);
int _sizes[CV_MAX_DIM];
size_t _steps[CV_MAX_DIM];
thiz.dims = 2;
thiz.rows = m->rows;
thiz.cols = m->cols;
- thiz.data = thiz.datastart = m->data.ptr;
+ thiz.datastart = thiz.data = m->data.ptr;
size_t esz = CV_ELEM_SIZE(m->type), minstep = thiz.cols*esz, _step = m->step;
if( _step == 0 )
_step = minstep;
}
else
{
- thiz.data = thiz.datastart = thiz.dataend = 0;
+ thiz.datastart = thiz.dataend = thiz.data = 0;
Mat(m->rows, m->cols, m->type, m->data.ptr, m->step).copyTo(thiz);
}
m.rows = img->roi->height;
m.cols = img->roi->width;
esz = CV_ELEM_SIZE(m.flags);
- m.data = m.datastart = (uchar*)img->imageData +
+ m.datastart = m.data = (uchar*)img->imageData +
(selectedPlane ? (img->roi->coi - 1)*m.step*img->height : 0) +
img->roi->yOffset*m.step[0] + img->roi->xOffset*esz;
}
{
if( normType == NORM_INF )
for( i = 0; i < N; i++, ++it )
- result = std::max(result, std::abs((double)*(const float*)it.ptr));
+ result = std::max(result, std::abs((double)it.value<float>()));
else if( normType == NORM_L1 )
for( i = 0; i < N; i++, ++it )
- result += std::abs(*(const float*)it.ptr);
+ result += std::abs(it.value<float>());
else
for( i = 0; i < N; i++, ++it )
{
- double v = *(const float*)it.ptr;
+ double v = it.value<float>();
result += v*v;
}
}
{
if( normType == NORM_INF )
for( i = 0; i < N; i++, ++it )
- result = std::max(result, std::abs(*(const double*)it.ptr));
+ result = std::max(result, std::abs(it.value<double>()));
else if( normType == NORM_L1 )
for( i = 0; i < N; i++, ++it )
- result += std::abs(*(const double*)it.ptr);
+ result += std::abs(it.value<double>());
else
for( i = 0; i < N; i++, ++it )
{
- double v = *(const double*)it.ptr;
+ double v = it.value<double>();
result += v*v;
}
}
float minval = FLT_MAX, maxval = -FLT_MAX;
for( i = 0; i < N; i++, ++it )
{
- float v = *(const float*)it.ptr;
+ float v = it.value<float>();
if( v < minval )
{
minval = v;
double minval = DBL_MAX, maxval = -DBL_MAX;
for( i = 0; i < N; i++, ++it )
{
- double v = *(const double*)it.ptr;
+ double v = it.value<float>();
if( v < minval )
{
minval = v;
int type = src.type();
if( !mask.empty() )
{
- typedef IppStatus (CV_STDCALL* ippiMaskMeanFuncC1)(const void *, int, void *, int, IppiSize, Ipp64f *);
+ typedef IppStatus (CV_STDCALL* ippiMaskMeanFuncC1)(const void *, int, const void *, int, IppiSize, Ipp64f *);
ippiMaskMeanFuncC1 ippFuncC1 =
type == CV_8UC1 ? (ippiMaskMeanFuncC1)ippiMean_8u_C1MR :
type == CV_16UC1 ? (ippiMaskMeanFuncC1)ippiMean_16u_C1MR :
return Scalar(res);
setIppErrorStatus();
}
- typedef IppStatus (CV_STDCALL* ippiMaskMeanFuncC3)(const void *, int, void *, int, IppiSize, int, Ipp64f *);
+ typedef IppStatus (CV_STDCALL* ippiMaskMeanFuncC3)(const void *, int, const void *, int, IppiSize, int, Ipp64f *);
ippiMaskMeanFuncC3 ippFuncC3 =
type == CV_8UC3 ? (ippiMaskMeanFuncC3)ippiMean_8u_C3CMR :
type == CV_16UC3 ? (ippiMaskMeanFuncC3)ippiMean_16u_C3CMR :
int type = src.type();
if( !mask.empty() )
{
- typedef IppStatus (CV_STDCALL* ippiMaskMeanStdDevFuncC1)(const void *, int, void *, int, IppiSize, Ipp64f *, Ipp64f *);
+ typedef IppStatus (CV_STDCALL* ippiMaskMeanStdDevFuncC1)(const void *, int, const void *, int, IppiSize, Ipp64f *, Ipp64f *);
ippiMaskMeanStdDevFuncC1 ippFuncC1 =
type == CV_8UC1 ? (ippiMaskMeanStdDevFuncC1)ippiMean_StdDev_8u_C1MR :
type == CV_16UC1 ? (ippiMaskMeanStdDevFuncC1)ippiMean_StdDev_16u_C1MR :
return;
setIppErrorStatus();
}
- typedef IppStatus (CV_STDCALL* ippiMaskMeanStdDevFuncC3)(const void *, int, void *, int, IppiSize, int, Ipp64f *, Ipp64f *);
+ typedef IppStatus (CV_STDCALL* ippiMaskMeanStdDevFuncC3)(const void *, int, const void *, int, IppiSize, int, Ipp64f *, Ipp64f *);
ippiMaskMeanStdDevFuncC3 ippFuncC3 =
type == CV_8UC3 ? (ippiMaskMeanStdDevFuncC3)ippiMean_StdDev_8u_C3CMR :
type == CV_16UC3 ? (ippiMaskMeanStdDevFuncC3)ippiMean_StdDev_16u_C3CMR :
hdr.flags = flags;
hdr.u = u;
hdr.datastart = u->data;
- hdr.data = hdr.datastart + offset;
+ hdr.data = u->data + offset;
hdr.datalimit = hdr.dataend = u->data + u->size;
CV_XADD(&hdr.u->refcount, 1);
return hdr;
if (dx + dy > 2)
{
// now the calculation:
- uchar* ptr = image.data + x_left + imagecols * y_top;
+ const uchar* ptr = image.data + x_left + imagecols * y_top;
// first the corners:
ret_val = A * int(*ptr);
ptr += dx + 1;
}
// now the calculation:
- uchar* ptr = image.data + x_left + imagecols * y_top;
+ const uchar* ptr = image.data + x_left + imagecols * y_top;
// first row:
ret_val = A * int(*ptr);
ptr++;
ret_val += B * int(*ptr);
// middle ones:
ptr += imagecols - dx - 1;
- uchar* end_j = ptr + dy * imagecols;
+ const uchar* end_j = ptr + dy * imagecols;
for (; ptr < end_j; ptr += imagecols - dx - 1)
{
ret_val += r_x_1_i * int(*ptr);
int t2;
// the feature orientation
- uchar* ptr = descriptors.data;
+ const uchar* ptr = descriptors.data;
for (size_t k = 0; k < ksize; k++)
{
cv::KeyPoint& kp = keypoints[k];
{
const cv::Mat& scores = pyramid_[layer].scores();
const int scorescols = scores.cols;
- uchar* data = scores.data + y_layer * scorescols + x_layer;
+ const uchar* data = scores.data + y_layer * scorescols + x_layer;
// decision tree:
const uchar center = (*data);
data--;
const int r_y = (int)((yf - y) * 1024);
const int r_x_1 = (1024 - r_x);
const int r_y_1 = (1024 - r_y);
- uchar* ptr = image.data + x + y * imagecols;
+ const uchar* ptr = image.data + x + y * imagecols;
// just interpolate:
ret_val = (r_x_1 * r_y_1 * int(*ptr));
ptr++;
const int r_y1_i = (int)(r_y1 * scaling);
// now the calculation:
- uchar* ptr = image.data + x_left + imagecols * y_top;
+ const uchar* ptr = image.data + x_left + imagecols * y_top;
// first row:
ret_val = A * int(*ptr);
ptr++;
ret_val += B * int(*ptr);
// middle ones:
ptr += imagecols - dx - 1;
- uchar* end_j = ptr + dy * imagecols;
+ const uchar* end_j = ptr + dy * imagecols;
for (; ptr < end_j; ptr += imagecols - dx - 1)
{
ret_val += r_x_1_i * int(*ptr);
{
bool result = false;
int color = img.channels() > 1;
- uchar* data = img.data;
+ uchar* data = img.ptr();
int step = (int)img.step;
jas_stream_t* stream = (jas_stream_t*)m_stream;
jas_image_t* image = (jas_image_t*)m_image;
for( int y = 0; y < h; y++ )
{
- uchar* data = _img.data + _img.step*y;
+ const uchar* data = _img.ptr(y);
for( int i = 0; i < ncmpts; i++ )
{
for( int x = 0; x < w; x++)
for( int y = 0; y < h; y++ )
{
- uchar* data = _img.data + _img.step*y;
+ const uchar* data = _img.ptr(y);
for( int i = 0; i < ncmpts; i++ )
{
for( int x = 0; x < w; x++)
if( shape == CV_SHAPE_CUSTOM )
{
eldata.resize(aperture_size.width*aperture_size.height);
- uchar* src = test_mat[INPUT][1].data;
+ const uchar* src = test_mat[INPUT][1].data;
int srcstep = (int)test_mat[INPUT][1].step;
int i, j, nonzero = 0;
int x, y, k;
int drows = dst.rows, dcols = dst.cols;
int srows = src.rows, scols = src.cols;
- uchar* sptr0 = src.data;
+ const uchar* sptr0 = src.data;
int depth = src.depth(), cn = src.channels();
int elem_size = (int)src.elemSize();
int step = (int)(src.step / CV_ELEM_SIZE(depth));
ofs = 3, ksize = 8;
Mat _extended_src_row(1, _src.cols + ksize * 2, _src.type());
- uchar* srow = _src.data + dy * _src.step;
+ const uchar* srow = _src.ptr(dy);
memcpy(_extended_src_row.data + elemsize * ksize, srow, _src.step);
for (int k = 0; k < ksize; ++k)
{