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
|
#include "cv.h"
#include "highgui.h"
#include <math.h>
#include <stdio.h>
int main( void)
{
IplImage* imagestart =0, *imagecopy = 0, *imagepyr = 0;
CvSeq *comp;
CvMemStorage *storage;
int threshold1=80;
int threshold2=10;
int level =4;
int block_size = 1000;
// Chargement image 3 canaux
IplImage *imgcontourfinal =cvLoadImage( "c:\\imagetest1\\imageref1.bmp", 1);
cvZero(imgcontourfinal);
// Chargement image 1 canaux
imagestart=cvLoadImage( "c:\\imagetest1\\imageenhanced.bmp", 0);
cvNamedWindow("Source", 0);
cvNamedWindow("contours", 0);
cvNamedWindow("Pyramide Segmentation", 0);
cvShowImage("Source", imagestart);
storage = cvCreateMemStorage ( block_size );
imagecopy = cvCloneImage(imagestart);
imagepyr = cvCloneImage(imagestart);
cvPyrSegmentation(imagecopy, imagepyr, storage, &comp,level, threshold1, threshold2);
cvShowImage("Pyramide Segmentation", imagepyr);
////////////////////////////////////
// prob ici //
CvSeq * zone=0;
zone = (CvSeq *)cvGetSeqElem(comp,1);
if(zone) printf("zone reconnue");
cvDrawContours( imgcontourfinal, zone, CV_RGB(255,0,0), CV_RGB(0,255,0), 0, 3, CV_AA, cvPoint(0,0) );
cvShowImage( "contours", imgcontourfinal);
///////////////////////////////
//Petit test de manip des sequences
printf("\n\n");
printf("nbre d'elts %d ",comp->total);
cvSeqRemove(comp, 12);
printf("\n\n");
printf("nbre d'elts apres %d ",comp->total);
cvWaitKey(0);
cvDestroyWindow("Segmentation");
cvDestroyWindow("Source");
cvReleaseMemStorage(&storage );
cvReleaseImage(&imagestart);
cvReleaseImage(&imagecopy);
cvReleaseImage(&imagepyr);
return 0;
} |
Partager