text: #include "opencv2/imgproc/imgproc.hpp"
  #include "opencv2/highgui/highgui.hpp"
  #include "opencv2/imgproc/imgproc_c.h"
  #include "opencv2/legacy/legacy.hpp"
  #include <stdio.h>
  
  static void help(void)
  {
      printf("\nThis program demonstrated color pyramid segmentation cvcvPyrSegmentation() which is controlled\n"
              "by two trhesholds which can be manipulated by a trackbar. It can take an image file name or defaults to 'fruits.jpg'\n"
              "Usage :\n"
              "./pyaramid_segmentation [image_path_filename -- Defaults to fruits.jpg]\n\n"
              );
  }
  
  IplImage*  image[2] = { 0, 0 }, *image0 = 0, *image1 = 0;
  CvSize size;
  
  int  w0, h0,i;
  int  threshold1, threshold2;
  int  l,level = 4;
  int sthreshold1, sthreshold2;
  int  l_comp;
  int block_size = 1000;
  float  parameter;
  double threshold;
  double rezult, min_rezult;
  int filter = CV_GAUSSIAN_5x5;
  CvConnectedComp *cur_comp, min_comp;
  CvSeq *comp;
  CvMemStorage *storage;
  
  CvPoint pt1, pt2;
  
  static void ON_SEGMENT(int a)
  {
      (void)a;
      cvPyrSegmentation(image0, image1, storage, &comp,
                        level, threshold1+1, threshold2+1);
  
      cvShowImage("Segmentation", image1);
  }
  
  
  int main( int argc, char** argv )
  {
      char* filename;
  
      help();
  
      filename = argc == 2 ? argv[1] : (char*)"fruits.jpg";
  
      if( (image[0] = cvLoadImage( filename, 1)) == 0 )
      {
          help();
          printf("Cannot load fileimage - %s\n", filename);
          return -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(1);
  
      sthreshold1 = cvCreateTrackbar("Threshold1", "Segmentation", &threshold1, 255, ON_SEGMENT);
      sthreshold2 = cvCreateTrackbar("Threshold2", "Segmentation",  &threshold2, 255, ON_SEGMENT);
  
      cvShowImage("Segmentation", image1);
      cvWaitKey(0);
  
      cvDestroyWindow("Segmentation");
      cvDestroyWindow("Source");
  
      cvReleaseMemStorage(&storage );
  
      cvReleaseImage(&image[0]);
      cvReleaseImage(&image0);
      cvReleaseImage(&image1);
  
      return 0;
  }
  
  #ifdef _EiC
  main(1,"pyramid_segmentation.c");
  #endif
  