diff --git a/modules/imgproc/src/subdivision2d.cpp b/modules/imgproc/src/subdivision2d.cpp index 2a2ab1dfeb..86a0f72852 100644 --- a/modules/imgproc/src/subdivision2d.cpp +++ b/modules/imgproc/src/subdivision2d.cpp @@ -493,7 +493,7 @@ void Subdiv2D::initDelaunay( Rect rect ) { CV_INSTRUMENT_REGION(); - float big_coord = 3.f * MAX( rect.width, rect.height ); + float big_coord = 6.f * MAX( rect.width, rect.height ); float rx = (float)rect.x; float ry = (float)rect.y; diff --git a/modules/imgproc/test/test_subdivision2d.cpp b/modules/imgproc/test/test_subdivision2d.cpp index 17549b6b15..a940adfc55 100644 --- a/modules/imgproc/test/test_subdivision2d.cpp +++ b/modules/imgproc/test/test_subdivision2d.cpp @@ -50,4 +50,18 @@ TEST(Imgproc_Subdiv2D_getTriangleList, regression_5788) EXPECT_EQ(trig_cnt, 105); } +TEST(Imgproc_Subdiv2D, issue_25696) { + std::vector points{ + {0, 0}, {40, 40}, {84, 104}, {86, 108} + }; + + cv::Rect subdivRect{cv::Point{-10, -10}, cv::Point{96, 118}}; + cv::Subdiv2D subdiv{subdivRect}; + subdiv.insert(points); + + std::vector triangles; + subdiv.getTriangleList(triangles); + + ASSERT_EQ(static_cast(2), triangles.size()); +} }}