1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
#include "cv.h"
#include "highgui.h"
#include <stdio.h>
IplImage *imagesrc=0, *imagesegm = 0;
int thresholdmax, thresholdmin;
int treshmax, treshmin;
void ON_SEGMENT(int a)
{
int level = 4;
CvSeq *comp;
CvMemStorage *storage;
int block_size = 1000;
storage = cvCreateMemStorage ( block_size );
cvPyrSegmentation(imagesrc, imagesegm, storage,&comp,level, thresholdmax, thresholdmin);
int seqnb = comp->total;
printf( "nb de sequence %d\n ",seqnb);
CvScalar myval;
CvConnectedComp *cur_comp;
double *mypixelval= new double [seqnb];
double minval=255.0;
double maxval=0.0;
for (int i=0;i<seqnb;i++)
{
cur_comp = (CvConnectedComp*)cvGetSeqElem (comp,i);
myval=cur_comp->value;
mypixelval[i]=myval.val[0];
if ( mypixelval[i] < minval) minval= mypixelval[i];
if ( mypixelval[i] > maxval) maxval= mypixelval[i];
}
for (int i=0;i<seqnb;i++)
printf( "%d ",(int)mypixelval[i]);
printf("\n"); printf( "min pixels val: %d ",(int)minval);
printf("\n"); printf( "max pixels val: %d ",(int)maxval);
printf("\n\n\n");
IplImage* mask = cvCreateImage(cvGetSize(imagesrc),imagesrc->depth,imagesrc->nChannels);
cvZero(mask);
cvCmpS(imagesegm, minval, mask, CV_CMP_EQ);
cvNamedWindow("components", 0);
cvShowImage("components", mask);
cvShowImage("Pyramid Segmentation", imagesegm);
}
int main( int argc, char** argv )
{
imagesrc = cvLoadImage( "c:\\imagetest1\\imageenhanced.bmp", 0);
cvNamedWindow("Source", 0);
cvShowImage("Source", imagesrc);
cvNamedWindow("Pyramid Segmentation", 0);
imagesegm = cvCloneImage (imagesrc);
thresholdmax =150;
thresholdmin =80;
ON_SEGMENT(1);
treshmax = cvCreateTrackbar("treshmax", "Pyramid Segmentation", &thresholdmax, 255,ON_SEGMENT);
treshmin = cvCreateTrackbar("treshmin", "Pyramid Segmentation", &thresholdmin, 255,ON_SEGMENT);
cvShowImage("Segmentation", imagesegm);
cvWaitKey(0);
return 0;
} |
Partager