porting polylines with empty `vector<Point>` from 2.4 to master

pull/3962/head
Andrey Pavlenko 10 years ago
parent 755527a90a
commit d2409d12c6
  1. 3
      modules/imgproc/src/drawing.cpp
  2. 19
      modules/imgproc/test/test_contours.cpp

@ -2229,7 +2229,10 @@ void cv::polylines(InputOutputArray _img, InputArrayOfArrays pts,
{
Mat p = pts.getMat(manyContours ? i : -1);
if( p.total() == 0 )
{
npts[i] = 0;
continue;
}
CV_Assert(p.checkVector(2, CV_32S) >= 0);
ptsptr[i] = p.ptr<Point>();
npts[i] = p.rows*p.cols*p.channels()/2;

@ -410,4 +410,23 @@ TEST(Core_Drawing, _914)
ASSERT_EQ( (3*rows + cols)*3 - 3*9, pixelsDrawn);
}
TEST(Core_Drawing, polylines_empty)
{
Mat img(100, 100, CV_8UC1, Scalar(0));
vector<Point> pts; // empty
polylines(img, pts, false, Scalar(255));
int cnt = countNonZero(img);
ASSERT_EQ(cnt, 0);
}
TEST(Core_Drawing, polylines)
{
Mat img(100, 100, CV_8UC1, Scalar(0));
vector<Point> pts;
pts.push_back(Point(0, 0));
pts.push_back(Point(20, 0));
polylines(img, pts, false, Scalar(255));
int cnt = countNonZero(img);
ASSERT_EQ(cnt, 21);
}
/* End of file. */

Loading…
Cancel
Save