Programme qui ne se termine pas correctement
Bonjour,
Je développe en ce moment un programme qui utilise la librairie Opencv. Mon programme fonctionne comme je le veux mais lorsqu'il a fini de s'exécuter, celui-ci continue de tourner (il ne propose pas d'appuyer sur une touche pour quitter la commande windows).
J'ai pourtant placé un return 0; et j'ai vérifié aussi qu'il ne reste pas bloqué dans la seule while de mon programme (ce n'est pas le cas puisqu'il exécute les lignes de commande suivantes).
Avez vous déjà rencontré ce problème? Je suis encore un peu débutant donc c'est peut être tout simple à résoudre.
Sinon j'ai pensé qu'il existait peut être une commande pour forcer la fermeture du programme.
Merci de votre aide
voilà mon programme:
Code:
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
| # include <cv.h>
# include <highgui.h>
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
IplImage *relief(IplImage * img1, IplImage * img2);
IplImage *capturation(void);
//Déclaration et création de la fonction relief
IplImage *relief(IplImage * img1, IplImage * img2)
{
int i=0;
IplImage *result = cvCloneImage(img2);
for(i=0; i<img1->imageSize; i++)
{
if(i%3==2.) {continue;}
result->imageData[i] = img1->imageData[i];
}
//cvResizeWindow( result, 1000, 800 );
return result;
}
//Déclaration de la fonction de prise d'image via une CAM
IplImage *capturation(void)
{
IplImage* image =NULL;
IplImage* image2=NULL;
CvCapture *capture=cvCaptureFromCAM(-1);
if (!capture) {printf("Camera error\n");}
image = cvQueryFrame(capture);
image2=cvCloneImage(image);
image =NULL;
cvReleaseCapture( &capture ); //Je pense que le prob vient de cette instruction
return image2;
}
int main()
{
char key;
IplImage *img1 =NULL;
IplImage *img2 =NULL;
IplImage *img3D =NULL;
while(key!=27)
{
img1 = capturation();
key= cvWaitKey(1);
img2 = capturation();
img3D = relief(img1, img2);
if(!img3D) {printf("ERREUR\n"); exit(EXIT_FAILURE);}
cvNamedWindow("Image en relief", CV_WINDOW_AUTOSIZE);
cvShowImage("Image en relief", img3D);
cvReleaseImage(&img1);
cvReleaseImage(&img2);
cvReleaseImage(&img3D);
}
cvDestroyAllWindows();
return 0;
} |