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
| #include <cv.h>
#include <cvaux.h>
#include <highgui.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main(int argc, char *argv[])
{
/* Font */
float vScale = 0.5;
float hScale = 0.5;
int lineWidth = 2;
CvFont font;
cvInitFont(&font,CV_FONT_HERSHEY_SIMPLEX, hScale,vScale,0,lineWidth);
/* Variables */
IplImage *newImg, *contourImg, *grayImg;
CvCapture *sequenceVideo;
//parametres pour la detection de contours
CvMemStorage * storage = cvCreateMemStorage(0);
CvSeq * contour = 0;
int mode = CV_RETR_EXTERNAL;
mode = CV_RETR_CCOMP; //detect both outside and inside contour
/* Ouverture de la video */
sequenceVideo = cvCaptureFromAVI(argv[1]);
/* creation des fenetres */
//cvNamedWindow(argv[1], CV_WINDOW_AUTOSIZE);
//cvNamedWindow("gray", CV_WINDOW_AUTOSIZE);
cvNamedWindow("contour",CV_WINDOW_AUTOSIZE);
while(cvGrabFrame(sequenceVideo))
{
storage = cvCreateMemStorage(0);
contour = 0
newImg = cvRetrieveFrame(sequenceVideo);
//create a single channel 1 byte newImgage (i.e. gray-level newImgage)
grayImg = cvCreateImage( cvSize(newImg->width, newImg->height), IPL_DEPTH_8U, 1 );
//convert original color newImgage (3 channel rgb color newImgage) to gray-level newImgage
cvCvtColor( newImg, grayImg, CV_BGR2GRAY );
//make a copy of the original newImgage to draw the detected contour
contourImg = cvCreateImage(cvGetSize(newImg), IPL_DEPTH_8U, 3);
contourImg = cvCloneImage( newImg );
//find the contour
cvFindContours(grayImg, storage, &contour, sizeof(CvContour), mode, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));
//draw the contour
cvDrawContours(contourImg, contour, CV_RGB(0, 255, 0), CV_RGB(0, 0, 255), 2, 2, 8);
//cvShowImage(argv[1], newImg);
cvShowImage( "contour", contourImg );
//cvShowImage("gray", grayImg);
cvWaitKey(1);
}
/* desallocation memoire */
cvReleaseCapture(&sequenceVideo);
cvDestroyWindow( argv[1] ); cvDestroyWindow( "contour" ), cvDestroyWindow( "gray" );
cvReleaseImage( &newImg ); cvReleaseImage( &grayImg ); cvReleaseImage( &contourImg );
cvReleaseMemStorage(&storage);
} |
Partager