mirror of
https://github.com/opencv/opencv.git
synced 2025-06-08 01:53:19 +08:00
fix bug on border at pyrUp
This commit is contained in:
parent
be565c2235
commit
bb1c2d71a8
@ -349,7 +349,7 @@ pyrUp_( const Mat& _src, Mat& _dst, int)
|
|||||||
for( ; sy <= y + 1; sy++ )
|
for( ; sy <= y + 1; sy++ )
|
||||||
{
|
{
|
||||||
WT* row = buf + ((sy - sy0) % PU_SZ)*bufstep;
|
WT* row = buf + ((sy - sy0) % PU_SZ)*bufstep;
|
||||||
int _sy = borderInterpolate(sy*2, dsize.height, BORDER_REFLECT_101)/2;
|
int _sy = borderInterpolate(sy*2, ssize.height*2, BORDER_REFLECT_101)/2;
|
||||||
const T* src = (const T*)(_src.data + _src.step*_sy);
|
const T* src = (const T*)(_src.data + _src.step*_sy);
|
||||||
|
|
||||||
if( ssize.width == cn )
|
if( ssize.width == cn )
|
||||||
@ -370,6 +370,11 @@ pyrUp_( const Mat& _src, Mat& _dst, int)
|
|||||||
t0 = src[sx - cn] + src[sx]*7;
|
t0 = src[sx - cn] + src[sx]*7;
|
||||||
t1 = src[sx]*8;
|
t1 = src[sx]*8;
|
||||||
row[dx] = t0; row[dx + cn] = t1;
|
row[dx] = t0; row[dx + cn] = t1;
|
||||||
|
|
||||||
|
if (dsize.width > ssize.width*2)
|
||||||
|
{
|
||||||
|
row[(_dst.cols-1) + x] = row[dx + cn];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for( x = cn; x < ssize.width - cn; x++ )
|
for( x = cn; x < ssize.width - cn; x++ )
|
||||||
@ -395,6 +400,17 @@ pyrUp_( const Mat& _src, Mat& _dst, int)
|
|||||||
dst1[x] = t1; dst0[x] = t0;
|
dst1[x] = t1; dst0[x] = t0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (dsize.height > ssize.height*2)
|
||||||
|
{
|
||||||
|
T* dst0 = _dst.ptr<T>(ssize.height*2-2);
|
||||||
|
T* dst2 = _dst.ptr<T>(ssize.height*2);
|
||||||
|
|
||||||
|
for(x = 0; x < dsize.width ; x++ )
|
||||||
|
{
|
||||||
|
dst2[x] = dst0[x];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef void (*PyrFunc)(const Mat&, Mat&, int);
|
typedef void (*PyrFunc)(const Mat&, Mat&, int);
|
||||||
|
Loading…
Reference in New Issue
Block a user