mirror of https://github.com/opencv/opencv.git
Open Source Computer Vision Library
https://opencv.org/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
2.3 KiB
99 lines
2.3 KiB
#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
|
|
|