mirror of
https://github.com/opencv/opencv.git
synced 2025-08-06 06:26:29 +08:00
Minor fix in MatAllocator::download
Minor fix in MatAllocator::upload Minor fix in MatAllocator::copy Minor fix in setSize function Minor fix in Mat::Mat Minor fix in cvMatNDToMat function Minor fix in _InputArray::getMatVector Minor fix in _InputArray::getUMatVector Minor fix in cv::hconcat Minor fix in cv::vconcat Minor fix in cv::setIdentity Minor fix in cv::trace Minor fix in transposeI_ template function Minor fix in reduceC_ template function Minor fix in sort_ template function Minor fix in sortIdx_ template function Minor fix in cvRange function Minor fix in MatConstIterator::seek Minor fix in SparseMat::create Minor fix in SparseMat::copyTo Minor fix in SparseMat::convertTo Minor fix in SparseMat::convertTo Minor fix in SparseMat::ptr Minor fix in SparseMat::resizeHashTab Fixes indentation
This commit is contained in:
parent
48af5e5579
commit
c562f0ad38
@ -77,9 +77,9 @@ void MatAllocator::download(UMatData* u, void* dstptr,
|
||||
{
|
||||
CV_Assert( sz[i] <= (size_t)INT_MAX );
|
||||
if( sz[i] == 0 )
|
||||
return;
|
||||
return;
|
||||
if( srcofs )
|
||||
srcptr += srcofs[i]*(i <= dims-2 ? srcstep[i] : 1);
|
||||
srcptr += srcofs[i]*(i <= dims-2 ? srcstep[i] : 1);
|
||||
isz[i] = (int)sz[i];
|
||||
}
|
||||
|
||||
@ -89,9 +89,9 @@ void MatAllocator::download(UMatData* u, void* dstptr,
|
||||
const Mat* arrays[] = { &src, &dst };
|
||||
uchar* ptrs[2];
|
||||
NAryMatIterator it(arrays, ptrs, 2);
|
||||
size_t j, planesz = it.size;
|
||||
size_t planesz = it.size;
|
||||
|
||||
for( j = 0; j < it.nplanes; j++, ++it )
|
||||
for( size_t j = 0; j < it.nplanes; j++, ++it )
|
||||
memcpy(ptrs[1], ptrs[0], planesz);
|
||||
}
|
||||
|
||||
@ -108,9 +108,9 @@ void MatAllocator::upload(UMatData* u, const void* srcptr, int dims, const size_
|
||||
{
|
||||
CV_Assert( sz[i] <= (size_t)INT_MAX );
|
||||
if( sz[i] == 0 )
|
||||
return;
|
||||
return;
|
||||
if( dstofs )
|
||||
dstptr += dstofs[i]*(i <= dims-2 ? dststep[i] : 1);
|
||||
dstptr += dstofs[i]*(i <= dims-2 ? dststep[i] : 1);
|
||||
isz[i] = (int)sz[i];
|
||||
}
|
||||
|
||||
@ -120,9 +120,9 @@ void MatAllocator::upload(UMatData* u, const void* srcptr, int dims, const size_
|
||||
const Mat* arrays[] = { &src, &dst };
|
||||
uchar* ptrs[2];
|
||||
NAryMatIterator it(arrays, ptrs, 2);
|
||||
size_t j, planesz = it.size;
|
||||
size_t planesz = it.size;
|
||||
|
||||
for( j = 0; j < it.nplanes; j++, ++it )
|
||||
for( size_t j = 0; j < it.nplanes; j++, ++it )
|
||||
memcpy(ptrs[1], ptrs[0], planesz);
|
||||
}
|
||||
|
||||
@ -155,9 +155,9 @@ void MatAllocator::copy(UMatData* usrc, UMatData* udst, int dims, const size_t s
|
||||
const Mat* arrays[] = { &src, &dst };
|
||||
uchar* ptrs[2];
|
||||
NAryMatIterator it(arrays, ptrs, 2);
|
||||
size_t j, planesz = it.size;
|
||||
size_t planesz = it.size;
|
||||
|
||||
for( j = 0; j < it.nplanes; j++, ++it )
|
||||
for( size_t j = 0; j < it.nplanes; j++, ++it )
|
||||
memcpy(ptrs[1], ptrs[0], planesz);
|
||||
}
|
||||
|
||||
@ -301,8 +301,7 @@ static inline void setSize( Mat& m, int _dims, const int* _sz,
|
||||
return;
|
||||
|
||||
size_t esz = CV_ELEM_SIZE(m.flags), esz1 = CV_ELEM_SIZE1(m.flags), total = esz;
|
||||
int i;
|
||||
for( i = _dims-1; i >= 0; i-- )
|
||||
for( int i = _dims-1; i >= 0; i-- )
|
||||
{
|
||||
int s = _sz[i];
|
||||
CV_Assert( s >= 0 );
|
||||
@ -546,16 +545,16 @@ Mat::Mat(const Mat& m, const Range* ranges)
|
||||
: flags(MAGIC_VAL), dims(0), rows(0), cols(0), data(0), datastart(0), dataend(0),
|
||||
datalimit(0), allocator(0), u(0), size(&rows)
|
||||
{
|
||||
int i, d = m.dims;
|
||||
int d = m.dims;
|
||||
|
||||
CV_Assert(ranges);
|
||||
for( i = 0; i < d; i++ )
|
||||
for( int 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++ )
|
||||
for( int i = 0; i < d; i++ )
|
||||
{
|
||||
Range r = ranges[i];
|
||||
if( r != Range::all() && r != Range(0, size.p[i]))
|
||||
@ -580,8 +579,8 @@ static Mat cvMatNDToMat(const CvMatND* m, bool copyData)
|
||||
int _sizes[CV_MAX_DIM];
|
||||
size_t _steps[CV_MAX_DIM];
|
||||
|
||||
int i, d = m->dims;
|
||||
for( i = 0; i < d; i++ )
|
||||
int d = m->dims;
|
||||
for( int i = 0; i < d; i++ )
|
||||
{
|
||||
_sizes[i] = m->dim[i].size;
|
||||
_steps[i] = m->dim[i].step;
|
||||
@ -1290,10 +1289,10 @@ void _InputArray::getMatVector(std::vector<Mat>& mv) const
|
||||
if( k == MAT )
|
||||
{
|
||||
const Mat& m = *(const Mat*)obj;
|
||||
int i, n = (int)m.size[0];
|
||||
int n = (int)m.size[0];
|
||||
mv.resize(n);
|
||||
|
||||
for( i = 0; i < n; i++ )
|
||||
for( int i = 0; i < n; i++ )
|
||||
mv[i] = m.dims == 2 ? Mat(1, m.cols, m.type(), (void*)m.ptr(i)) :
|
||||
Mat(m.dims-1, &m.size[1], m.type(), (void*)m.ptr(i), &m.step[1]);
|
||||
return;
|
||||
@ -1302,20 +1301,20 @@ void _InputArray::getMatVector(std::vector<Mat>& mv) const
|
||||
if( k == EXPR )
|
||||
{
|
||||
Mat m = *(const MatExpr*)obj;
|
||||
int i, n = m.size[0];
|
||||
int n = m.size[0];
|
||||
mv.resize(n);
|
||||
|
||||
for( i = 0; i < n; i++ )
|
||||
for( int i = 0; i < n; i++ )
|
||||
mv[i] = m.row(i);
|
||||
return;
|
||||
}
|
||||
|
||||
if( k == MATX )
|
||||
{
|
||||
size_t i, n = sz.height, esz = CV_ELEM_SIZE(flags);
|
||||
size_t n = sz.height, esz = CV_ELEM_SIZE(flags);
|
||||
mv.resize(n);
|
||||
|
||||
for( i = 0; i < n; i++ )
|
||||
for( size_t i = 0; i < n; i++ )
|
||||
mv[i] = Mat(1, sz.width, CV_MAT_TYPE(flags), (uchar*)obj + esz*sz.width*i);
|
||||
return;
|
||||
}
|
||||
@ -1324,11 +1323,11 @@ void _InputArray::getMatVector(std::vector<Mat>& mv) const
|
||||
{
|
||||
const std::vector<uchar>& v = *(const std::vector<uchar>*)obj;
|
||||
|
||||
size_t i, n = v.size(), esz = CV_ELEM_SIZE(flags);
|
||||
size_t n = v.size(), esz = CV_ELEM_SIZE(flags);
|
||||
int t = CV_MAT_DEPTH(flags), cn = CV_MAT_CN(flags);
|
||||
mv.resize(n);
|
||||
|
||||
for( i = 0; i < n; i++ )
|
||||
for( size_t i = 0; i < n; i++ )
|
||||
mv[i] = Mat(1, cn, t, (void*)(&v[0] + esz*i));
|
||||
return;
|
||||
}
|
||||
@ -1342,11 +1341,11 @@ void _InputArray::getMatVector(std::vector<Mat>& mv) const
|
||||
if( k == STD_VECTOR_VECTOR )
|
||||
{
|
||||
const std::vector<std::vector<uchar> >& vv = *(const std::vector<std::vector<uchar> >*)obj;
|
||||
int i, n = (int)vv.size();
|
||||
int n = (int)vv.size();
|
||||
int t = CV_MAT_TYPE(flags);
|
||||
mv.resize(n);
|
||||
|
||||
for( i = 0; i < n; i++ )
|
||||
for( int i = 0; i < n; i++ )
|
||||
{
|
||||
const std::vector<uchar>& v = vv[i];
|
||||
mv[i] = Mat(size(i), t, (void*)&v[0]);
|
||||
@ -1357,10 +1356,10 @@ void _InputArray::getMatVector(std::vector<Mat>& mv) const
|
||||
if( k == STD_VECTOR_MAT )
|
||||
{
|
||||
const std::vector<Mat>& v = *(const std::vector<Mat>*)obj;
|
||||
size_t i, n = v.size();
|
||||
size_t n = v.size();
|
||||
mv.resize(n);
|
||||
|
||||
for( i = 0; i < n; i++ )
|
||||
for( size_t i = 0; i < n; i++ )
|
||||
mv[i] = v[i];
|
||||
return;
|
||||
}
|
||||
@ -1368,10 +1367,10 @@ void _InputArray::getMatVector(std::vector<Mat>& mv) const
|
||||
if( k == STD_VECTOR_UMAT )
|
||||
{
|
||||
const std::vector<UMat>& v = *(const std::vector<UMat>*)obj;
|
||||
size_t i, n = v.size();
|
||||
size_t n = v.size();
|
||||
mv.resize(n);
|
||||
|
||||
for( i = 0; i < n; i++ )
|
||||
for( size_t i = 0; i < n; i++ )
|
||||
mv[i] = v[i].getMat(accessFlags);
|
||||
return;
|
||||
}
|
||||
@ -1393,10 +1392,10 @@ void _InputArray::getUMatVector(std::vector<UMat>& umv) const
|
||||
if( k == STD_VECTOR_MAT )
|
||||
{
|
||||
const std::vector<Mat>& v = *(const std::vector<Mat>*)obj;
|
||||
size_t i, n = v.size();
|
||||
size_t n = v.size();
|
||||
umv.resize(n);
|
||||
|
||||
for( i = 0; i < n; i++ )
|
||||
for( size_t i = 0; i < n; i++ )
|
||||
umv[i] = v[i].getUMat(accessFlags);
|
||||
return;
|
||||
}
|
||||
@ -1404,10 +1403,10 @@ void _InputArray::getUMatVector(std::vector<UMat>& umv) const
|
||||
if( k == STD_VECTOR_UMAT )
|
||||
{
|
||||
const std::vector<UMat>& v = *(const std::vector<UMat>*)obj;
|
||||
size_t i, n = v.size();
|
||||
size_t n = v.size();
|
||||
umv.resize(n);
|
||||
|
||||
for( i = 0; i < n; i++ )
|
||||
for( size_t i = 0; i < n; i++ )
|
||||
umv[i] = v[i];
|
||||
return;
|
||||
}
|
||||
@ -2818,8 +2817,7 @@ void cv::hconcat(const Mat* src, size_t nsrc, OutputArray _dst)
|
||||
}
|
||||
|
||||
int totalCols = 0, cols = 0;
|
||||
size_t i;
|
||||
for( i = 0; i < nsrc; i++ )
|
||||
for( size_t i = 0; i < nsrc; i++ )
|
||||
{
|
||||
CV_Assert( src[i].dims <= 2 &&
|
||||
src[i].rows == src[0].rows &&
|
||||
@ -2828,7 +2826,7 @@ void cv::hconcat(const Mat* src, size_t nsrc, OutputArray _dst)
|
||||
}
|
||||
_dst.create( src[0].rows, totalCols, src[0].type());
|
||||
Mat dst = _dst.getMat();
|
||||
for( i = 0; i < nsrc; i++ )
|
||||
for( size_t i = 0; i < nsrc; i++ )
|
||||
{
|
||||
Mat dpart = dst(Rect(cols, 0, src[i].cols, src[i].rows));
|
||||
src[i].copyTo(dpart);
|
||||
@ -2864,8 +2862,7 @@ void cv::vconcat(const Mat* src, size_t nsrc, OutputArray _dst)
|
||||
}
|
||||
|
||||
int totalRows = 0, rows = 0;
|
||||
size_t i;
|
||||
for( i = 0; i < nsrc; i++ )
|
||||
for( size_t i = 0; i < nsrc; i++ )
|
||||
{
|
||||
CV_Assert(src[i].dims <= 2 &&
|
||||
src[i].cols == src[0].cols &&
|
||||
@ -2874,7 +2871,7 @@ void cv::vconcat(const Mat* src, size_t nsrc, OutputArray _dst)
|
||||
}
|
||||
_dst.create( totalRows, src[0].cols, src[0].type());
|
||||
Mat dst = _dst.getMat();
|
||||
for( i = 0; i < nsrc; i++ )
|
||||
for( size_t i = 0; i < nsrc; i++ )
|
||||
{
|
||||
Mat dpart(dst, Rect(0, rows, src[i].cols, src[i].rows));
|
||||
src[i].copyTo(dpart);
|
||||
@ -2951,7 +2948,7 @@ void cv::setIdentity( InputOutputArray _m, const Scalar& s )
|
||||
ocl_setIdentity(_m, s))
|
||||
|
||||
Mat m = _m.getMat();
|
||||
int i, j, rows = m.rows, cols = m.cols, type = m.type();
|
||||
int rows = m.rows, cols = m.cols, type = m.type();
|
||||
|
||||
if( type == CV_32FC1 )
|
||||
{
|
||||
@ -2959,9 +2956,9 @@ void cv::setIdentity( InputOutputArray _m, const Scalar& s )
|
||||
float val = (float)s[0];
|
||||
size_t step = m.step/sizeof(data[0]);
|
||||
|
||||
for( i = 0; i < rows; i++, data += step )
|
||||
for( int i = 0; i < rows; i++, data += step )
|
||||
{
|
||||
for( j = 0; j < cols; j++ )
|
||||
for( int j = 0; j < cols; j++ )
|
||||
data[j] = 0;
|
||||
if( i < cols )
|
||||
data[i] = val;
|
||||
@ -2973,9 +2970,9 @@ void cv::setIdentity( InputOutputArray _m, const Scalar& s )
|
||||
double val = s[0];
|
||||
size_t step = m.step/sizeof(data[0]);
|
||||
|
||||
for( i = 0; i < rows; i++, data += step )
|
||||
for( int i = 0; i < rows; i++, data += step )
|
||||
{
|
||||
for( j = 0; j < cols; j++ )
|
||||
for( int j = 0; j < cols; j++ )
|
||||
data[j] = j == i ? val : 0;
|
||||
}
|
||||
}
|
||||
@ -2994,7 +2991,7 @@ cv::Scalar cv::trace( InputArray _m )
|
||||
|
||||
Mat m = _m.getMat();
|
||||
CV_Assert( m.dims <= 2 );
|
||||
int i, type = m.type();
|
||||
int type = m.type();
|
||||
int nm = std::min(m.rows, m.cols);
|
||||
|
||||
if( type == CV_32FC1 )
|
||||
@ -3002,7 +2999,7 @@ cv::Scalar cv::trace( InputArray _m )
|
||||
const float* ptr = m.ptr<float>();
|
||||
size_t step = m.step/sizeof(ptr[0]) + 1;
|
||||
double _s = 0;
|
||||
for( i = 0; i < nm; i++ )
|
||||
for( int i = 0; i < nm; i++ )
|
||||
_s += ptr[i*step];
|
||||
return _s;
|
||||
}
|
||||
@ -3012,7 +3009,7 @@ cv::Scalar cv::trace( InputArray _m )
|
||||
const double* ptr = m.ptr<double>();
|
||||
size_t step = m.step/sizeof(ptr[0]) + 1;
|
||||
double _s = 0;
|
||||
for( i = 0; i < nm; i++ )
|
||||
for( int i = 0; i < nm; i++ )
|
||||
_s += ptr[i*step];
|
||||
return _s;
|
||||
}
|
||||
@ -3084,12 +3081,11 @@ transpose_( const uchar* src, size_t sstep, uchar* dst, size_t dstep, Size sz )
|
||||
template<typename T> static void
|
||||
transposeI_( uchar* data, size_t step, int n )
|
||||
{
|
||||
int i, j;
|
||||
for( i = 0; i < n; i++ )
|
||||
for( int i = 0; i < n; i++ )
|
||||
{
|
||||
T* row = (T*)(data + step*i);
|
||||
uchar* data1 = data + i*sizeof(T);
|
||||
for( j = i+1; j < n; j++ )
|
||||
for( int j = i+1; j < n; j++ )
|
||||
std::swap( row[j], *(T*)(data1 + step*j) );
|
||||
}
|
||||
}
|
||||
@ -3417,7 +3413,7 @@ reduceC_( const Mat& srcmat, Mat& dstmat )
|
||||
{
|
||||
typedef typename Op::rtype WT;
|
||||
Size size = srcmat.size();
|
||||
int i, k, cn = srcmat.channels();
|
||||
int cn = srcmat.channels();
|
||||
size.width *= cn;
|
||||
Op op;
|
||||
|
||||
@ -3426,13 +3422,14 @@ reduceC_( const Mat& srcmat, Mat& dstmat )
|
||||
const T* src = srcmat.ptr<T>(y);
|
||||
ST* dst = dstmat.ptr<ST>(y);
|
||||
if( size.width == cn )
|
||||
for( k = 0; k < cn; k++ )
|
||||
for( int k = 0; k < cn; k++ )
|
||||
dst[k] = src[k];
|
||||
else
|
||||
{
|
||||
for( k = 0; k < cn; k++ )
|
||||
for( int k = 0; k < cn; k++ )
|
||||
{
|
||||
WT a0 = src[k], a1 = src[k+cn];
|
||||
int i;
|
||||
for( i = 2*cn; i <= size.width - 4*cn; i += 4*cn )
|
||||
{
|
||||
a0 = op(a0, (WT)src[i+k]);
|
||||
@ -3446,7 +3443,7 @@ reduceC_( const Mat& srcmat, Mat& dstmat )
|
||||
a0 = op(a0, (WT)src[i+k]);
|
||||
}
|
||||
a0 = op(a0, a1);
|
||||
dst[k] = (ST)a0;
|
||||
dst[k] = (ST)a0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -3934,7 +3931,7 @@ template<typename T> static void sort_( const Mat& src, Mat& dst, int flags )
|
||||
{
|
||||
AutoBuffer<T> buf;
|
||||
T* bptr;
|
||||
int i, j, n, len;
|
||||
int n, len;
|
||||
bool sortRows = (flags & 1) == CV_SORT_EVERY_ROW;
|
||||
bool inplace = src.data == dst.data;
|
||||
bool sortDescending = (flags & CV_SORT_DESCENDING) != 0;
|
||||
@ -3959,7 +3956,7 @@ template<typename T> static void sort_( const Mat& src, Mat& dst, int flags )
|
||||
}
|
||||
#endif
|
||||
|
||||
for( i = 0; i < n; i++ )
|
||||
for( int i = 0; i < n; i++ )
|
||||
{
|
||||
T* ptr = bptr;
|
||||
if( sortRows )
|
||||
@ -3974,7 +3971,7 @@ template<typename T> static void sort_( const Mat& src, Mat& dst, int flags )
|
||||
}
|
||||
else
|
||||
{
|
||||
for( j = 0; j < len; j++ )
|
||||
for( int j = 0; j < len; j++ )
|
||||
ptr[j] = src.ptr<T>(j)[i];
|
||||
}
|
||||
|
||||
@ -3996,7 +3993,7 @@ template<typename T> static void sort_( const Mat& src, Mat& dst, int flags )
|
||||
#ifdef USE_IPP_SORT
|
||||
setIppErrorStatus();
|
||||
#endif
|
||||
for( j = 0; j < len/2; j++ )
|
||||
for( int j = 0; j < len/2; j++ )
|
||||
std::swap(ptr[j], ptr[len-1-j]);
|
||||
}
|
||||
#ifdef USE_IPP_SORT
|
||||
@ -4015,7 +4012,7 @@ template<typename T> static void sort_( const Mat& src, Mat& dst, int flags )
|
||||
#endif
|
||||
|
||||
if( !sortRows )
|
||||
for( j = 0; j < len; j++ )
|
||||
for( int j = 0; j < len; j++ )
|
||||
dst.ptr<T>(j)[i] = ptr[j];
|
||||
}
|
||||
}
|
||||
@ -4056,14 +4053,12 @@ template<typename T> static void sortIdx_( const Mat& src, Mat& dst, int flags )
|
||||
{
|
||||
AutoBuffer<T> buf;
|
||||
AutoBuffer<int> ibuf;
|
||||
T* bptr;
|
||||
int* _iptr;
|
||||
int i, j, n, len;
|
||||
bool sortRows = (flags & 1) == CV_SORT_EVERY_ROW;
|
||||
bool sortDescending = (flags & CV_SORT_DESCENDING) != 0;
|
||||
|
||||
CV_Assert( src.data != dst.data );
|
||||
|
||||
int n, len;
|
||||
if( sortRows )
|
||||
n = src.rows, len = src.cols;
|
||||
else
|
||||
@ -4072,8 +4067,8 @@ template<typename T> static void sortIdx_( const Mat& src, Mat& dst, int flags )
|
||||
buf.allocate(len);
|
||||
ibuf.allocate(len);
|
||||
}
|
||||
bptr = (T*)buf;
|
||||
_iptr = (int*)ibuf;
|
||||
T* bptr = (T*)buf;
|
||||
int* _iptr = (int*)ibuf;
|
||||
|
||||
#if defined USE_IPP_SORT && IPP_DISABLE_BLOCK
|
||||
int depth = src.depth();
|
||||
@ -4086,7 +4081,7 @@ template<typename T> static void sortIdx_( const Mat& src, Mat& dst, int flags )
|
||||
}
|
||||
#endif
|
||||
|
||||
for( i = 0; i < n; i++ )
|
||||
for( int i = 0; i < n; i++ )
|
||||
{
|
||||
T* ptr = bptr;
|
||||
int* iptr = _iptr;
|
||||
@ -4098,10 +4093,10 @@ template<typename T> static void sortIdx_( const Mat& src, Mat& dst, int flags )
|
||||
}
|
||||
else
|
||||
{
|
||||
for( j = 0; j < len; j++ )
|
||||
for( int j = 0; j < len; j++ )
|
||||
ptr[j] = src.ptr<T>(j)[i];
|
||||
}
|
||||
for( j = 0; j < len; j++ )
|
||||
for( int j = 0; j < len; j++ )
|
||||
iptr[j] = j;
|
||||
|
||||
#if defined USE_IPP_SORT && IPP_DISABLE_BLOCK
|
||||
@ -4121,7 +4116,7 @@ template<typename T> static void sortIdx_( const Mat& src, Mat& dst, int flags )
|
||||
#if defined USE_IPP_SORT && IPP_DISABLE_BLOCK
|
||||
setIppErrorStatus();
|
||||
#endif
|
||||
for( j = 0; j < len/2; j++ )
|
||||
for( int j = 0; j < len/2; j++ )
|
||||
std::swap(iptr[j], iptr[len-1-j]);
|
||||
}
|
||||
#if defined USE_IPP_SORT && IPP_DISABLE_BLOCK
|
||||
@ -4140,7 +4135,7 @@ template<typename T> static void sortIdx_( const Mat& src, Mat& dst, int flags )
|
||||
#endif
|
||||
|
||||
if( !sortRows )
|
||||
for( j = 0; j < len; j++ )
|
||||
for( int j = 0; j < len; j++ )
|
||||
dst.ptr<int>(j)[i] = iptr[j];
|
||||
}
|
||||
}
|
||||
@ -4251,22 +4246,17 @@ cvReduce( const CvArr* srcarr, CvArr* dstarr, int dim, int op )
|
||||
CV_IMPL CvArr*
|
||||
cvRange( CvArr* arr, double start, double end )
|
||||
{
|
||||
int ok = 0;
|
||||
|
||||
CvMat stub, *mat = (CvMat*)arr;
|
||||
double delta;
|
||||
int type, step;
|
||||
int step;
|
||||
double val = start;
|
||||
int i, j;
|
||||
int rows, cols;
|
||||
|
||||
if( !CV_IS_MAT(mat) )
|
||||
mat = cvGetMat( mat, &stub);
|
||||
|
||||
rows = mat->rows;
|
||||
cols = mat->cols;
|
||||
type = CV_MAT_TYPE(mat->type);
|
||||
delta = (end-start)/(rows*cols);
|
||||
int rows = mat->rows;
|
||||
int cols = mat->cols;
|
||||
int type = CV_MAT_TYPE(mat->type);
|
||||
double delta = (end-start)/(rows*cols);
|
||||
|
||||
if( CV_IS_MAT_CONT(mat->type) )
|
||||
{
|
||||
@ -4285,29 +4275,28 @@ cvRange( CvArr* arr, double start, double end )
|
||||
if( fabs(val - ival) < DBL_EPSILON &&
|
||||
fabs(delta - idelta) < DBL_EPSILON )
|
||||
{
|
||||
for( i = 0; i < rows; i++, idata += step )
|
||||
for( j = 0; j < cols; j++, ival += idelta )
|
||||
for( int i = 0; i < rows; i++, idata += step )
|
||||
for( int j = 0; j < cols; j++, ival += idelta )
|
||||
idata[j] = ival;
|
||||
}
|
||||
else
|
||||
{
|
||||
for( i = 0; i < rows; i++, idata += step )
|
||||
for( j = 0; j < cols; j++, val += delta )
|
||||
for( int i = 0; i < rows; i++, idata += step )
|
||||
for( int j = 0; j < cols; j++, val += delta )
|
||||
idata[j] = cvRound(val);
|
||||
}
|
||||
}
|
||||
else if( type == CV_32FC1 )
|
||||
{
|
||||
float* fdata = mat->data.fl;
|
||||
for( i = 0; i < rows; i++, fdata += step )
|
||||
for( j = 0; j < cols; j++, val += delta )
|
||||
for( int i = 0; i < rows; i++, fdata += step )
|
||||
for( int j = 0; j < cols; j++, val += delta )
|
||||
fdata[j] = (float)val;
|
||||
}
|
||||
else
|
||||
CV_Error( CV_StsUnsupportedFormat, "The function only supports 32sC1 and 32fC1 datatypes" );
|
||||
|
||||
ok = 1;
|
||||
return ok ? arr : 0;
|
||||
return arr;
|
||||
}
|
||||
|
||||
|
||||
@ -4708,7 +4697,7 @@ void MatConstIterator::seek(ptrdiff_t ofs, bool relative)
|
||||
|
||||
void MatConstIterator::seek(const int* _idx, bool relative)
|
||||
{
|
||||
int i, d = m->dims;
|
||||
int d = m->dims;
|
||||
ptrdiff_t ofs = 0;
|
||||
if( !_idx )
|
||||
;
|
||||
@ -4716,7 +4705,7 @@ void MatConstIterator::seek(const int* _idx, bool relative)
|
||||
ofs = _idx[0]*m->size[1] + _idx[1];
|
||||
else
|
||||
{
|
||||
for( i = 0; i < d; i++ )
|
||||
for( int i = 0; i < d; i++ )
|
||||
ofs = ofs*m->size[i] + _idx[i];
|
||||
}
|
||||
seek(ofs, relative);
|
||||
@ -4926,13 +4915,13 @@ SparseMat::SparseMat(const Mat& m)
|
||||
|
||||
void SparseMat::create(int d, const int* _sizes, int _type)
|
||||
{
|
||||
int i;
|
||||
CV_Assert( _sizes && 0 < d && d <= CV_MAX_DIM );
|
||||
for( i = 0; i < d; i++ )
|
||||
for( int i = 0; i < d; i++ )
|
||||
CV_Assert( _sizes[i] > 0 );
|
||||
_type = CV_MAT_TYPE(_type);
|
||||
if( hdr && _type == type() && hdr->dims == d && hdr->refcount == 1 )
|
||||
{
|
||||
int i;
|
||||
for( i = 0; i < d; i++ )
|
||||
if( _sizes[i] != hdr->size[i] )
|
||||
break;
|
||||
@ -4945,7 +4934,7 @@ void SparseMat::create(int d, const int* _sizes, int _type)
|
||||
int _sizes_backup[CV_MAX_DIM]; // #5991
|
||||
if (_sizes == hdr->size)
|
||||
{
|
||||
for(i = 0; i < d; i++ )
|
||||
for(int i = 0; i < d; i++ )
|
||||
_sizes_backup[i] = _sizes[i];
|
||||
_sizes = _sizes_backup;
|
||||
}
|
||||
@ -4965,9 +4954,9 @@ void SparseMat::copyTo( SparseMat& m ) const
|
||||
}
|
||||
m.create( hdr->dims, hdr->size, type() );
|
||||
SparseMatConstIterator from = begin();
|
||||
size_t i, N = nzcount(), esz = elemSize();
|
||||
size_t N = nzcount(), esz = elemSize();
|
||||
|
||||
for( i = 0; i < N; i++, ++from )
|
||||
for( size_t i = 0; i < N; i++, ++from )
|
||||
{
|
||||
const Node* n = from.node();
|
||||
uchar* to = m.newNode(n->idx, n->hashval);
|
||||
@ -4983,9 +4972,9 @@ void SparseMat::copyTo( Mat& m ) const
|
||||
m = Scalar(0);
|
||||
|
||||
SparseMatConstIterator from = begin();
|
||||
size_t i, N = nzcount(), esz = elemSize();
|
||||
size_t N = nzcount(), esz = elemSize();
|
||||
|
||||
for( i = 0; i < N; i++, ++from )
|
||||
for( size_t i = 0; i < N; i++, ++from )
|
||||
{
|
||||
const Node* n = from.node();
|
||||
copyElem( from.ptr, (ndims > 1 ? m.ptr(n->idx) : m.ptr(n->idx[0])), esz);
|
||||
@ -5012,12 +5001,12 @@ void SparseMat::convertTo( SparseMat& m, int rtype, double alpha ) const
|
||||
m.create( hdr->dims, hdr->size, rtype );
|
||||
|
||||
SparseMatConstIterator from = begin();
|
||||
size_t i, N = nzcount();
|
||||
size_t N = nzcount();
|
||||
|
||||
if( alpha == 1 )
|
||||
{
|
||||
ConvertData cvtfunc = getConvertElem(type(), rtype);
|
||||
for( i = 0; i < N; i++, ++from )
|
||||
for( size_t i = 0; i < N; i++, ++from )
|
||||
{
|
||||
const Node* n = from.node();
|
||||
uchar* to = hdr == m.hdr ? from.ptr : m.newNode(n->idx, n->hashval);
|
||||
@ -5027,7 +5016,7 @@ void SparseMat::convertTo( SparseMat& m, int rtype, double alpha ) const
|
||||
else
|
||||
{
|
||||
ConvertScaleData cvtfunc = getConvertScaleElem(type(), rtype);
|
||||
for( i = 0; i < N; i++, ++from )
|
||||
for( size_t i = 0; i < N; i++, ++from )
|
||||
{
|
||||
const Node* n = from.node();
|
||||
uchar* to = hdr == m.hdr ? from.ptr : m.newNode(n->idx, n->hashval);
|
||||
@ -5049,12 +5038,12 @@ void SparseMat::convertTo( Mat& m, int rtype, double alpha, double beta ) const
|
||||
m = Scalar(beta);
|
||||
|
||||
SparseMatConstIterator from = begin();
|
||||
size_t i, N = nzcount();
|
||||
size_t N = nzcount();
|
||||
|
||||
if( alpha == 1 && beta == 0 )
|
||||
{
|
||||
ConvertData cvtfunc = getConvertElem(type(), rtype);
|
||||
for( i = 0; i < N; i++, ++from )
|
||||
for( size_t i = 0; i < N; i++, ++from )
|
||||
{
|
||||
const Node* n = from.node();
|
||||
uchar* to = m.ptr(n->idx);
|
||||
@ -5064,7 +5053,7 @@ void SparseMat::convertTo( Mat& m, int rtype, double alpha, double beta ) const
|
||||
else
|
||||
{
|
||||
ConvertScaleData cvtfunc = getConvertScaleElem(type(), rtype);
|
||||
for( i = 0; i < N; i++, ++from )
|
||||
for( size_t i = 0; i < N; i++, ++from )
|
||||
{
|
||||
const Node* n = from.node();
|
||||
uchar* to = m.ptr(n->idx);
|
||||
@ -5098,7 +5087,7 @@ uchar* SparseMat::ptr(int i0, bool createMissing, size_t* hashval)
|
||||
int idx[] = { i0 };
|
||||
return newNode( idx, h );
|
||||
}
|
||||
return 0;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
uchar* SparseMat::ptr(int i0, int i1, bool createMissing, size_t* hashval)
|
||||
@ -5120,7 +5109,7 @@ uchar* SparseMat::ptr(int i0, int i1, bool createMissing, size_t* hashval)
|
||||
int idx[] = { i0, i1 };
|
||||
return newNode( idx, h );
|
||||
}
|
||||
return 0;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
uchar* SparseMat::ptr(int i0, int i1, int i2, bool createMissing, size_t* hashval)
|
||||
@ -5143,7 +5132,7 @@ uchar* SparseMat::ptr(int i0, int i1, int i2, bool createMissing, size_t* hashva
|
||||
int idx[] = { i0, i1, i2 };
|
||||
return newNode( idx, h );
|
||||
}
|
||||
return 0;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
uchar* SparseMat::ptr(const int* idx, bool createMissing, size_t* hashval)
|
||||
@ -5167,7 +5156,7 @@ uchar* SparseMat::ptr(const int* idx, bool createMissing, size_t* hashval)
|
||||
nidx = elem->next;
|
||||
}
|
||||
|
||||
return createMissing ? newNode(idx, h) : 0;
|
||||
return createMissing ? newNode(idx, h) : NULL;
|
||||
}
|
||||
|
||||
void SparseMat::erase(int i0, int i1, size_t* hashval)
|
||||
@ -5241,13 +5230,13 @@ void SparseMat::resizeHashTab(size_t newsize)
|
||||
if((newsize & (newsize-1)) != 0)
|
||||
newsize = (size_t)1 << cvCeil(std::log((double)newsize)/CV_LOG2);
|
||||
|
||||
size_t i, hsize = hdr->hashtab.size();
|
||||
size_t hsize = hdr->hashtab.size();
|
||||
std::vector<size_t> _newh(newsize);
|
||||
size_t* newh = &_newh[0];
|
||||
for( i = 0; i < newsize; i++ )
|
||||
for( size_t i = 0; i < newsize; i++ )
|
||||
newh[i] = 0;
|
||||
uchar* pool = &hdr->pool[0];
|
||||
for( i = 0; i < hsize; i++ )
|
||||
for( size_t i = 0; i < hsize; i++ )
|
||||
{
|
||||
size_t nidx = hdr->hashtab[i];
|
||||
while( nidx )
|
||||
|
Loading…
Reference in New Issue
Block a user