Bonjour tout le monde !

J'ai un petit problème, apparemment d'overflow, avec un programme fait avec opencv.
Je souhaite en fait capturer l'image de la webcam et l'afficher, puis modifier cette image en remplaçant les pixels contenant beaucoup de rouge par un pixel blanc et afficher l'image modifiée.
Le problème est que le programme fonctionne pendant quelques secondes puis cesse de fonctionner.
Voici mon code, pouvez-vous m'aider à trouver d'où vient le problème ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
#include <cv.h>
#include <highgui.h>
 
int main(void)
{
    // On initialise la capture et on test si cela fonctionne
    CvCapture* webcam = cvCreateCameraCapture(0);
    if(!webcam)                 return 1;
    if(!cvGrabFrame(webcam))    return 2;
 
    // Déclaration de l'image de la webcam est de celle modifiée
    IplImage* frame = cvRetrieveFrame(webcam);
    IplImage* modif = cvCloneImage(frame);
 
    // Déclaration d'une fenêtre pour l'image de la webcam, une autre pour l'image modifiée
    cvNamedWindow("Hand tracking", CV_WINDOW_AUTOSIZE);
    cvNamedWindow("Test", CV_WINDOW_AUTOSIZE);
 
    while(true)
    {
        // On récupère l'image de la webcam, on la retourne et on la copie dans l'image modifiée
        if(!cvGrabFrame(webcam))    break;
        cvFlip(cvRetrieveFrame(webcam), frame, 1);
        modif = cvCloneImage(frame);
 
        // Pour tous les pixels de l'image modifiée
        for(int i = 0; i < modif -> width; i++)    for(int j = 0; j < modif -> height; j++)
        {
            // On récupère le pixel
            CvScalar pixel = cvGet2D(frame, j, i);
 
            // Si il posède une quantité importante de rouge
            if(pixel.val[2] > 200)
            {
                // On le remplace par un pixel blanc
                CvScalar white;
                white.val[0] = white.val[1] = white.val[2] = 255;
                cvSet2D(modif, j, i, white);
            }
        }
 
        // On affiche l'image de la webcam et l'image modifiée
        cvShowImage("Hand tracking", frame);
        cvShowImage("Test", modif);
 
        // On attent 1ms et on quitte si on a appuyé sur <echap>
        if(cvWaitKey(1) == 27)      break;
    }
 
    // On libère les fenêtre, la capture et les images
    cvDestroyAllWindows();
    frame = NULL;
    modif = NULL;
    cvReleaseCapture(&webcam);
 
    return 0;
}
Ou alors, si quelqu'un a déjà récupéré les frames du flux vidéo de la webcam et a modifié certains de leurs pixels, comment a t-il fait ?

Merci de votre aide.