Merge pull request #11331 from dkurt:fix_11318

pull/11338/head
Alexander Alekhin 7 years ago
commit 28d4157ea7
  1. 9
      modules/dnn/include/opencv2/dnn/shape_utils.hpp
  2. 4
      modules/dnn/src/layers/convolution_layer.cpp
  3. 2
      modules/dnn/src/layers/pooling_layer.cpp

@ -120,7 +120,7 @@ static inline Mat getPlane(const Mat &m, int n, int cn)
return Mat(m.dims - 2, sz, m.type(), (void*)m.ptr<float>(n, cn));
}
static inline MatShape shape(const int* dims, const int n = 4)
static inline MatShape shape(const int* dims, const int n)
{
MatShape shape;
shape.assign(dims, dims + n);
@ -132,6 +132,11 @@ static inline MatShape shape(const Mat& mat)
return shape(mat.size.p, mat.dims);
}
static inline MatShape shape(const MatSize& sz)
{
return shape(sz.p, sz[-1]);
}
static inline MatShape shape(const UMat& mat)
{
return shape(mat.size.p, mat.dims);
@ -142,7 +147,7 @@ namespace {inline bool is_neg(int i) { return i < 0; }}
static inline MatShape shape(int a0, int a1=-1, int a2=-1, int a3=-1)
{
int dims[] = {a0, a1, a2, a3};
MatShape s = shape(dims);
MatShape s = shape(dims, 4);
s.erase(std::remove_if(s.begin(), s.end(), is_neg), s.end());
return s;
}

@ -234,7 +234,7 @@ public:
CV_Assert(ngroups > 0 && inpCn % ngroups == 0 && outCn % ngroups == 0);
int dims[] = {inputs[0][0], outCn, out.height, out.width};
outputs.resize(inputs.size(), shape(dims));
outputs.resize(inputs.size(), shape(dims, 4));
return false;
}
@ -1088,7 +1088,7 @@ public:
CV_Assert(blobs[0].size[0] == inpCn);
int dims[] = {inputs[0][0], outCn, outH, outW};
outputs.resize(inputs.size(), shape(dims));
outputs.resize(inputs.size(), shape(dims, 4));
internals.push_back(MatShape());
if (!is1x1())

@ -853,7 +853,7 @@ public:
dims[0] = inputs[1][0]; // Number of proposals;
dims[1] = psRoiOutChannels;
}
outputs.assign(type == MAX ? 2 : 1, shape(dims));
outputs.assign(type == MAX ? 2 : 1, shape(dims, 4));
return false;
}

Loading…
Cancel
Save