Update to 2.0.0 tree from current Fremantle build
[opencv] / samples / swig_python / pyramid_segmentation.py
diff --git a/samples/swig_python/pyramid_segmentation.py b/samples/swig_python/pyramid_segmentation.py
new file mode 100755 (executable)
index 0000000..c75af6f
--- /dev/null
@@ -0,0 +1,59 @@
+#!/usr/bin/python
+import sys
+from opencv.cv import *
+from opencv.highgui import *
+image =  [None, None]
+image0 = None
+image1 = None
+threshold1 = 255
+threshold2 = 30
+l = level = 4;
+block_size = 1000;
+filter = CV_GAUSSIAN_5x5;
+storage = None
+min_comp = CvConnectedComp()
+
+def set_thresh1( val ):
+    global threshold1
+    threshold1 = val
+    ON_SEGMENT()
+
+def set_thresh2( val ):
+    global threshold2
+    threshold2 = val
+    ON_SEGMENT()
+
+def ON_SEGMENT():
+    global storage
+    global min_comp
+    comp = cvPyrSegmentation(image0, image1, storage, level, threshold1+1, threshold2+1);
+    cvShowImage("Segmentation", image1);
+
+if __name__ == "__main__":
+    filename = "../c/fruits.jpg";
+    if len(sys.argv) == 2:
+        filename = sys.argv[1]
+    image[0] = cvLoadImage( filename, 1)
+    if not image[0]:
+        print "Error opening %s" % filename
+        sys.exit(-1)
+
+    cvNamedWindow("Source", 0);
+    cvShowImage("Source", image[0]);
+    cvNamedWindow("Segmentation", 0);
+    storage = cvCreateMemStorage ( block_size );
+    image[0].width &= -(1<<level);
+    image[0].height &= -(1<<level);
+    image0 = cvCloneImage( image[0] );
+    image1 = cvCloneImage( image[0] );
+    # segmentation of the color image
+    l = 1;
+    threshold1 =255;
+    threshold2 =30;
+    ON_SEGMENT();
+    sthreshold1 = cvCreateTrackbar("Threshold1", "Segmentation", threshold1, 255, set_thresh1);
+    sthreshold2 = cvCreateTrackbar("Threshold2", "Segmentation",  threshold2, 255, set_thresh2);
+    cvShowImage("Segmentation", image1);
+    cvWaitKey(0);
+    cvDestroyWindow("Segmentation");
+    cvDestroyWindow("Source");