/source/3rd_party/opencv/sources/samples/c/pyramid_segmentation.c
C | 99 lines | 74 code | 24 blank | 1 comment | 3 complexity | 887da71084efdaed4439c63c75915ccd MD5 | raw file
- #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