pyramid_segmentation.c
上传用户:banwdc
上传日期:2016-06-25
资源大小:2871k
文件大小:2k
- #include "cv.h"
- #include "highgui.h"
- #include <math.h>
- 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;
- CvFilter filter = CV_GAUSSIAN_5x5;
- CvConnectedComp *cur_comp, min_comp;
- CvSeq *comp;
- CvMemStorage *storage;
- CvPoint pt1, pt2;
- void ON_SEGMENT(int a)
- {
- cvPyrSegmentation(image0, image1, storage, &comp,
- level, threshold1+1, threshold2+1);
- /*l_comp = comp->total;
- i = 0;
- min_comp.value = cvScalarAll(0);
- while(i<l_comp)
- {
- cur_comp = (CvConnectedComp*)cvGetSeqElem ( comp, i );
- if(fabs(255- min_comp.value.val[0])>
- fabs(255- cur_comp->value.val[0]) &&
- fabs(min_comp.value.val[1])>
- fabs(cur_comp->value.val[1]) &&
- fabs(min_comp.value.val[2])>
- fabs(cur_comp->value.val[2]) )
- min_comp = *cur_comp;
- i++;
- }*/
- cvShowImage("Segmentation", image1);
- }
- int main( int argc, char** argv )
- {
- char* filename = argc == 2 ? argv[1] : (char*)"fruits.jpg";
- if( (image[0] = cvLoadImage( filename, 1)) == 0 )
- 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] );
- // 对彩色图像进行分割
- 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;
- }