| 12
 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
 84
 85
 
 |  
#include <cv.h>
#include <highgui.h>
#include <iostream>
 
using namespace std;
 
 
int main() {
  // Charger le fichier
  CvCapture* capture = cvCaptureFromFile("F:\wmv.wmv");
 
  // Verifier si le fichier est bien charge
  if( !capture ) {
    fprintf( stderr, "ERROR: capture is NULL \n" );
    getchar();
    return -1;
  }
 
  // Create a window in which the captured images will be presented
  // Creer une fenetre
  cvNamedWindow( "mywindow", CV_WINDOW_AUTOSIZE );
  IplImage* frame0 = cvQueryFrame(capture);
  int i=0;
 
  // Show the image captured from the file in the window and repeat
  while( 1 ) {
    // Get one frame
    IplImage* frame = cvQueryFrame( capture );
    i=i++;
 
    // If there is still an other frame after this frame, show it
    if( !frame ) {
      fprintf( stderr, "ERROR: frame is null...\n" );
      getchar();
      break;
    }
    float largeur = frame->width;
    float hauteur = frame->height;
    float a; float seuil=3; float coefficient=0.000025; float b=0;
    CvScalar scalaire;
    CvScalar scalaire0;
 
    for(float x=0; x<frame->width; x++)
    {
        for(float y=0; y<frame->height; y++)
        {
            // On récupère le pixel (x,y) de l'image.
            scalaire=cvGet2D(frame, y, x);
            scalaire0=cvGet2D(frame0, y, x);
            //différence entre les valeurs des pixels
            a = scalaire.val[0] - scalaire0.val[0];
            /* cout << a << endl; */
            if (abs(a) > seuil)
                {
           //compter le nombre de pixel 
           //dont la différence des valeurs excède le seuil
                    b=b++;
                }
        }
    }
     // Si le nombre de pixels excède le nombre total
     // de pixels dans le frame multiplié par un facteur 'coefficient'
    if (b > (largeur * hauteur * coefficient))
    {
        cout << ("Changement de scene a ", i, "eme frame") << endl;
    }
    cvShowImage( "mywindow", frame );
    cvWaitKey(10);
    // Do not release the frame!
 
    frame0=frame;
    //frame0 prend les valeurs de frame actuel
    //et sera utilisé dans le boucle suivant
 
    //If ESC key pressed, Key=0x10001B under OpenCV 0.9.7(linux version),
    //remove higher bits using AND operator
    if( (cvWaitKey(10) & 255) == 27 ) break;
  }
 
  // Release the capture device housekeeping
  cvReleaseCapture( &capture );
  cvDestroyWindow( "mywindow" );
  return 0;
} | 
Partager