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.
102 lines
2.3 KiB
102 lines
2.3 KiB
#ifdef _CH_ |
|
#pragma package <opencv> |
|
#endif |
|
|
|
#define CV_NO_BACKWARD_COMPATIBILITY |
|
|
|
#ifndef _EiC |
|
#include "cv.h" |
|
#include "highgui.h" |
|
#include <math.h> |
|
#endif |
|
|
|
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; |
|
|
|
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] ); |
|
// 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
|
|
|