mirror of
https://github.com/opencv/opencv.git
synced 2024-11-27 20:50:25 +08:00
Merge pull request #25996 from asmorkalov:as/fillPoly_check
Fixed asserts in fillPoly
This commit is contained in:
commit
d8bcc2c85d
21
modules/imgproc/misc/python/test/test_imgproc.py
Normal file
21
modules/imgproc/misc/python/test/test_imgproc.py
Normal file
@ -0,0 +1,21 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import numpy as np
|
||||
import cv2 as cv
|
||||
|
||||
from tests_common import NewOpenCVTests
|
||||
|
||||
class Imgproc_Tests(NewOpenCVTests):
|
||||
|
||||
def test_python_986(self):
|
||||
cntls = []
|
||||
img = np.zeros((100,100,3), dtype=np.uint8)
|
||||
color = (0,0,0)
|
||||
cnts = np.array(cntls, dtype=np.int32).reshape((1, -1, 2))
|
||||
try:
|
||||
cv.fillPoly(img, cnts, color)
|
||||
assert False
|
||||
except:
|
||||
assert True
|
@ -2044,8 +2044,11 @@ void fillPoly( InputOutputArray _img, const Point** pts, const int* npts, int nc
|
||||
edges.reserve( total + 1 );
|
||||
for (i = 0; i < ncontours; i++)
|
||||
{
|
||||
std::vector<Point2l> _pts(pts[i], pts[i] + npts[i]);
|
||||
CollectPolyEdges(img, _pts.data(), npts[i], edges, buf, line_type, shift, offset);
|
||||
if (npts[i] > 0 && pts[i])
|
||||
{
|
||||
std::vector<Point2l> _pts(pts[i], pts[i] + npts[i]);
|
||||
CollectPolyEdges(img, _pts.data(), npts[i], edges, buf, line_type, shift, offset);
|
||||
}
|
||||
}
|
||||
|
||||
FillEdgeCollection(img, edges, buf, line_type);
|
||||
@ -2430,7 +2433,7 @@ void cv::fillPoly(InputOutputArray img, InputArrayOfArrays pts,
|
||||
for( i = 0; i < ncontours; i++ )
|
||||
{
|
||||
Mat p = pts.getMat(manyContours ? i : -1);
|
||||
CV_Assert(p.checkVector(2, CV_32S) >= 0);
|
||||
CV_Assert(p.checkVector(2, CV_32S) > 0);
|
||||
ptsptr[i] = p.ptr<Point>();
|
||||
npts[i] = p.rows*p.cols*p.channels()/2;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user