Merge branch 2.4

This commit is contained in:
Andrey Kamaev
2013-02-04 17:15:55 +04:00
33 changed files with 448 additions and 318 deletions

View File

@@ -2592,39 +2592,36 @@ cvCompareHist( const CvHistogram* hist1,
CV_IMPL void
cvCopyHist( const CvHistogram* src, CvHistogram** _dst )
{
int eq = 0;
int is_sparse;
int i, dims1, dims2;
int size1[CV_MAX_DIM], size2[CV_MAX_DIM], total = 1;
float* ranges[CV_MAX_DIM];
float** thresh = 0;
CvHistogram* dst;
if( !_dst )
CV_Error( CV_StsNullPtr, "Destination double pointer is NULL" );
dst = *_dst;
CvHistogram* dst = *_dst;
if( !CV_IS_HIST(src) || (dst && !CV_IS_HIST(dst)) )
CV_Error( CV_StsBadArg, "Invalid histogram header[s]" );
is_sparse = CV_IS_SPARSE_MAT(src->bins);
dims1 = cvGetDims( src->bins, size1 );
for( i = 0; i < dims1; i++ )
total *= size1[i];
if( dst && is_sparse == CV_IS_SPARSE_MAT(dst->bins))
bool eq = false;
int size1[CV_MAX_DIM];
bool is_sparse = CV_IS_SPARSE_MAT(src->bins);
int dims1 = cvGetDims( src->bins, size1 );
if( dst && (is_sparse == CV_IS_SPARSE_MAT(dst->bins)))
{
dims2 = cvGetDims( dst->bins, size2 );
int size2[CV_MAX_DIM];
int dims2 = cvGetDims( dst->bins, size2 );
if( dims1 == dims2 )
{
int i;
for( i = 0; i < dims1; i++ )
{
if( size1[i] != size2[i] )
break;
}
eq = (i == dims1);
}
eq = i == dims1;
}
if( !eq )
@@ -2636,14 +2633,21 @@ cvCopyHist( const CvHistogram* src, CvHistogram** _dst )
if( CV_HIST_HAS_RANGES( src ))
{
float* ranges[CV_MAX_DIM];
float** thresh = 0;
if( CV_IS_UNIFORM_HIST( src ))
{
for( i = 0; i < dims1; i++ )
for( int i = 0; i < dims1; i++ )
ranges[i] = (float*)src->thresh[i];
thresh = ranges;
}
else
{
thresh = src->thresh2;
}
cvSetHistBinRanges( dst, thresh, CV_IS_UNIFORM_HIST(src));
}

View File

@@ -327,11 +327,10 @@ pyrUp_( const Mat& _src, Mat& _dst, int)
CV_Assert( std::abs(dsize.width - ssize.width*2) == dsize.width % 2 &&
std::abs(dsize.height - ssize.height*2) == dsize.height % 2);
int k, x, sy0 = -PU_SZ/2, sy = sy0, width0 = ssize.width - 1;
int k, x, sy0 = -PU_SZ/2, sy = sy0;
ssize.width *= cn;
dsize.width *= cn;
width0 *= cn;
for( x = 0; x < ssize.width; x++ )
dtab[x] = (x/cn)*2*cn + x % cn;