Skip to content

Commit 315da17

Browse files
committed
Matインスタンスの生成方法修正
1 parent e6e1409 commit 315da17

File tree

1 file changed

+4
-5
lines changed

1 file changed

+4
-5
lines changed

modules/ximgproc/src/sparse_table_morphology.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ std::vector<Rect> genPow2RectsToCoverKernel(InputArray _kernel)
3737
int colSkip = (1 << colDepth) - 1;
3838
int colLim = kernel.cols - colSkip;
3939

40-
st[0][colDepth] = Mat::zeros(kernel.rows, kernel.cols, kernel.type());
40+
st[0][colDepth].create(kernel.size(), kernel.type());
4141
uchar* ptr1 = st[0][colDepth - 1].ptr();
4242
uchar* ptr2 = st[0][colDepth - 1].ptr(rowStep, colStep);
4343
uchar* dst = st[0][colDepth].ptr();
@@ -63,7 +63,7 @@ std::vector<Rect> genPow2RectsToCoverKernel(InputArray _kernel)
6363
int colSkip = (1 << colDepth) - 1;
6464
int colLim = kernel.cols - colSkip;
6565

66-
st[rowDepth][colDepth] = Mat::zeros(kernel.rows, kernel.cols, kernel.type());
66+
st[rowDepth][colDepth].create(kernel.size(), kernel.type());
6767
uchar* ptr1 = st[rowDepth - 1][colDepth].ptr();
6868
uchar* ptr2 = st[rowDepth - 1][colDepth].ptr(rowStep, colStep);
6969
uchar* dst = st[rowDepth][colDepth].ptr();
@@ -181,6 +181,7 @@ void makeMinSparseTableMat(InputArray src, OutputArray dst, int rowStep, int col
181181
{
182182
CV_Assert(rowStep * colStep == 0); // one of "rowStep" or "colStep" is required to be 0.
183183

184+
dst.create(src.size(), src.type());
184185
Mat src_ = src.getMat();
185186
Mat dst_ = dst.getMat();
186187
int rowLim = src.rows() - rowStep;
@@ -299,22 +300,20 @@ void erode(InputArray _src, OutputArray _dst, InputArray _kernel, Point anchor,
299300
for (int i = 0; i < stPlan.size(); i++)
300301
{
301302
StStep step = stPlan[i];
302-
Mat node(expandedSrc.rows, expandedSrc.cols, expandedSrc.type());
303303
switch (step.ax)
304304
{
305305
case Dim::Col:
306-
st[step.dimRow][step.dimCol + 1] = node;
307306
makeMinSparseTableMat(st[step.dimRow][step.dimCol], st[step.dimRow][step.dimCol + 1], 0, 1 << step.dimCol);
308307
break;
309308
case Dim::Row:
310-
st[step.dimRow + 1][step.dimCol] = node;
311309
makeMinSparseTableMat(st[step.dimRow][step.dimCol], st[step.dimRow + 1][step.dimCol], 1 << step.dimRow, 0);
312310
break;
313311
}
314312
}
315313

316314
// result constructioin
317315
Mat dst = _dst.getMat();
316+
dst.create(_src.size(), _src.type());
318317
dst.setTo(ZERO);
319318
int colChLim = src.cols * src.channels();
320319
for (int i = 0; i < pow2Rects.size(); i++)

0 commit comments

Comments
 (0)