Fix bug in maskBoundingRect

pull/25183/head
MaximSmolskiy 12 months ago
parent 1eb061f89d
commit ed93384817
  1. 6
      modules/imgproc/src/shapedescr.cpp
  2. 16
      modules/imgproc/test/test_boundingrect.cpp

@ -1055,16 +1055,12 @@ static Rect maskBoundingRect( const Mat& img )
offset = MIN(offset, size.width);
for( ; j < offset; j++ )
if( _ptr[j] )
{
have_nz = 1;
break;
}
if( j < offset )
{
if( j < xmin )
xmin = j;
if( j > xmax )
xmax = j;
have_nz = 1;
}
if( offset < size.width )
{

@ -140,4 +140,20 @@ void CV_BoundingRectTest::run(int)
TEST (Imgproc_BoundingRect, accuracy) { CV_BoundingRectTest test; test.safe_run(); }
TEST (Imgproc_BoundingRect, bug_24217)
{
for (int image_width = 3; image_width < 20; image_width++)
{
for (int image_height = 1; image_height < 15; image_height++)
{
cv::Rect rect(0, image_height - 1, 3, 1);
cv::Mat image(cv::Size(image_width, image_height), CV_8UC1, cv::Scalar(0));
image(rect) = 255;
ASSERT_EQ(boundingRect(image), rect);
}
}
}
}} // namespace

Loading…
Cancel
Save