@@ -37,7 +37,7 @@ std::vector<Rect> genPow2RectsToCoverKernel(InputArray _kernel)
37
37
int colSkip = (1 << colDepth) - 1 ;
38
38
int colLim = kernel.cols - colSkip;
39
39
40
- st[0 ][colDepth] = Mat::zeros (kernel.rows , kernel. cols , kernel.type ());
40
+ st[0 ][colDepth]. create (kernel.size () , kernel.type ());
41
41
uchar* ptr1 = st[0 ][colDepth - 1 ].ptr ();
42
42
uchar* ptr2 = st[0 ][colDepth - 1 ].ptr (rowStep, colStep);
43
43
uchar* dst = st[0 ][colDepth].ptr ();
@@ -63,7 +63,7 @@ std::vector<Rect> genPow2RectsToCoverKernel(InputArray _kernel)
63
63
int colSkip = (1 << colDepth) - 1 ;
64
64
int colLim = kernel.cols - colSkip;
65
65
66
- st[rowDepth][colDepth] = Mat::zeros (kernel.rows , kernel. cols , kernel.type ());
66
+ st[rowDepth][colDepth]. create (kernel.size () , kernel.type ());
67
67
uchar* ptr1 = st[rowDepth - 1 ][colDepth].ptr ();
68
68
uchar* ptr2 = st[rowDepth - 1 ][colDepth].ptr (rowStep, colStep);
69
69
uchar* dst = st[rowDepth][colDepth].ptr ();
@@ -181,6 +181,7 @@ void makeMinSparseTableMat(InputArray src, OutputArray dst, int rowStep, int col
181
181
{
182
182
CV_Assert (rowStep * colStep == 0 ); // one of "rowStep" or "colStep" is required to be 0.
183
183
184
+ dst.create (src.size (), src.type ());
184
185
Mat src_ = src.getMat ();
185
186
Mat dst_ = dst.getMat ();
186
187
int rowLim = src.rows () - rowStep;
@@ -299,22 +300,20 @@ void erode(InputArray _src, OutputArray _dst, InputArray _kernel, Point anchor,
299
300
for (int i = 0 ; i < stPlan.size (); i++)
300
301
{
301
302
StStep step = stPlan[i];
302
- Mat node (expandedSrc.rows , expandedSrc.cols , expandedSrc.type ());
303
303
switch (step.ax )
304
304
{
305
305
case Dim::Col:
306
- st[step.dimRow ][step.dimCol + 1 ] = node;
307
306
makeMinSparseTableMat (st[step.dimRow ][step.dimCol ], st[step.dimRow ][step.dimCol + 1 ], 0 , 1 << step.dimCol );
308
307
break ;
309
308
case Dim::Row:
310
- st[step.dimRow + 1 ][step.dimCol ] = node;
311
309
makeMinSparseTableMat (st[step.dimRow ][step.dimCol ], st[step.dimRow + 1 ][step.dimCol ], 1 << step.dimRow , 0 );
312
310
break ;
313
311
}
314
312
}
315
313
316
314
// result constructioin
317
315
Mat dst = _dst.getMat ();
316
+ dst.create (_src.size (), _src.type ());
318
317
dst.setTo (ZERO);
319
318
int colChLim = src.cols * src.channels ();
320
319
for (int i = 0 ; i < pow2Rects.size (); i++)
0 commit comments