diff --git a/modules/imgproc/src/connectedcomponents.cpp b/modules/imgproc/src/connectedcomponents.cpp index 1ad74ed38af3c334a420fbf06736b2f563769e82..f2d41f454dee561a6665826def5be60e7c84d3dd 100644 --- a/modules/imgproc/src/connectedcomponents.cpp +++ b/modules/imgproc/src/connectedcomponents.cpp @@ -1570,7 +1570,7 @@ namespace cv{ #define CONDITION_S img_row[c - 1] > 0 #define CONDITION_X img_row[c] > 0 -#define ACTION_1 // nothing to do +#define ACTION_1 img_labels_row[c] = 0; #define ACTION_2 img_labels_row[c] = label; \ P_[label] = label; \ label = label + 1; @@ -1831,7 +1831,7 @@ namespace cv{ std::vector P_(Plength, 0); LabelT* P = P_.data(); - //P[0] = 0; + P[0] = 0; LabelT lunique = 1; // First scan @@ -1851,7 +1851,7 @@ namespace cv{ #define CONDITION_S img_row[c - 1] > 0 #define CONDITION_X img_row[c] > 0 -#define ACTION_1 // nothing to do +#define ACTION_1 img_labels_row[c] = 0; #define ACTION_2 img_labels_row[c] = lunique; \ P[lunique] = lunique; \ lunique = lunique + 1; // new label diff --git a/modules/imgproc/test/test_connectedcomponents.cpp b/modules/imgproc/test/test_connectedcomponents.cpp index ed11ea6fdad14c01c5c3516feb89c0cfdbf468ba..e1a6b761c76fd3f6be04e414a00a43ae3f8ee3a9 100644 --- a/modules/imgproc/test/test_connectedcomponents.cpp +++ b/modules/imgproc/test/test_connectedcomponents.cpp @@ -789,5 +789,16 @@ TEST(Imgproc_ConnectedComponents, single_column) } +TEST(Imgproc_ConnectedComponents, 4conn_regression_21366) +{ + Mat src = Mat::zeros(Size(10, 10), CV_8UC1); + { + Mat labels, stats, centroids; + EXPECT_NO_THROW(cv::connectedComponentsWithStats(src, labels, stats, centroids, 4)); + } +} + + + } } // namespace