Merge pull request #27476 from s-trinh:LSD_drawSegments_avoid_exception_empty_vec

Check for empty vector to avoid throwing an exception in LineSegmentDetectorImpl::drawSegments()
This commit is contained in:
Alexander Smorkalov 2025-06-24 12:22:47 +03:00 committed by GitHub
commit e392b3843e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 0 deletions

View File

@ -1076,6 +1076,10 @@ void LineSegmentDetectorImpl::drawSegments(InputOutputArray _image, InputArray l
}
Mat _lines = lines.getMat();
if (_lines.empty())
{
return;
}
const int N = _lines.checkVector(4);
CV_Assert(_lines.depth() == CV_32F || _lines.depth() == CV_32S);

View File

@ -402,4 +402,18 @@ TEST_F(Imgproc_LSD_Common, compareSegmentsVec4i)
ASSERT_EQ(result2, 11);
}
TEST_F(Imgproc_LSD_Common, drawSegmentsEmpty)
{
Ptr<LineSegmentDetector> detector = createLineSegmentDetector(LSD_REFINE_STD);
Mat1b img = Mat1b::zeros(240, 320);
std::vector<Vec4i> lines_4i;
detector->detect(img, lines_4i);
Mat3b img_color = Mat3b::zeros(240, 320);
ASSERT_NO_THROW(
detector->drawSegments(img_color, lines_4i);
);
}
}} // namespace