Added regression test for #1652
authorAndrey Kamaev <no@email>
Thu, 29 Mar 2012 03:33:07 +0000 (03:33 +0000)
committerAndrey Kamaev <no@email>
Thu, 29 Mar 2012 03:33:07 +0000 (03:33 +0000)
modules/imgproc/test/test_grabcut.cpp

index 61eca24..d9ecd36 100644 (file)
@@ -139,3 +139,34 @@ void CV_GrabcutTest::run( int /* start_from */)
 
 TEST(Imgproc_GrabCut, regression) { CV_GrabcutTest test; test.safe_run(); }
 
+TEST(Imgproc_GrabCut, repeatability)
+{
+    cvtest::TS& ts = *cvtest::TS::ptr();
+
+    Mat image_1 = imread(ts.get_data_path() + "grabcut/image1652.ppm", CV_LOAD_IMAGE_COLOR);
+    Mat mask_1 = imread(ts.get_data_path() + "grabcut/mask1652.ppm", CV_LOAD_IMAGE_GRAYSCALE);
+    Rect roi_1(0, 0, 150, 150);
+
+    Mat image_2 = image_1.clone();
+    Mat mask_2 = mask_1.clone();
+    Rect roi_2 = roi_1;
+
+    Mat image_3 = image_1.clone();
+    Mat mask_3 = mask_1.clone();
+    Rect roi_3 = roi_1;
+
+    Mat bgdModel_1, fgdModel_1;
+    Mat bgdModel_2, fgdModel_2;
+    Mat bgdModel_3, fgdModel_3;
+
+    theRNG().state = 12378213;
+    grabCut(image_1, mask_1, roi_1, bgdModel_1, fgdModel_1, 1, GC_INIT_WITH_MASK);
+    theRNG().state = 12378213;
+    grabCut(image_2, mask_2, roi_2, bgdModel_2, fgdModel_2, 1, GC_INIT_WITH_MASK);
+    theRNG().state = 12378213;
+    grabCut(image_3, mask_3, roi_3, bgdModel_3, fgdModel_3, 1, GC_INIT_WITH_MASK);
+
+    EXPECT_EQ(0, countNonZero(mask_1 != mask_2));
+    EXPECT_EQ(0, countNonZero(mask_1 != mask_3));
+    EXPECT_EQ(0, countNonZero(mask_2 != mask_3));
+}