Salut, j'ai fait se programme pour détection et estimation de mouvement avec le flot optique méthode de Horn s et la méthode de Lucas k avec Visual c++2008 et opencv2.4
mais le résultat n'arrive pas à s'afficher si quelqu'un peut m'aider a trouver le problème voici le programme, merci
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
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
86
#include "stdafx.h" 
#include <stdio.h>
#include <cv.h>
#include <highgui.h>
#include <math.h>
#include "opencv2/legacy/legacy.hpp"
# include "cxcore.h"
# include < iostream >
#include <stdlib.h>
//#include <cvaux.h>
//#include "opencv2/objdetect/objdetect.hpp"
# include <opencv2\legacy\legacy.hpp>
#include <opencv2/video/tracking.hpp>
 
#include <cv.h>
#include <highgui.h>
#include "opencv2/legacy/legacy.hpp"
 
int
main (int argc, char **argv)
{
  int i, j, dx, dy, rows, cols;
  IplImage *src_img1, *src_img2, *dst_img1, *dst_img2;
  CvMat *velx, *vely;
  CvTermCriteria criteria;
 
//CvCapture* capture;
//capture = cvCaptureFromCAM( -1 );
 
  if (argc != 3 ||
      (src_img1 = cvLoadImage ("D:\\1.jpg", CV_LOAD_IMAGE_GRAYSCALE)) == 0 ||
      (src_img2 = cvLoadImage ("D:\\2.jpg", CV_LOAD_IMAGE_GRAYSCALE)) == 0)
    return -1;
 
  dst_img1 = cvLoadImage ("D:\\2.jpg", CV_LOAD_IMAGE_COLOR);
  dst_img2 = (IplImage *) cvClone (dst_img1);
 
   //s'assurer que la structure qui contient le / (1) vecteur vitesse /, etc
  cols = src_img1->width;
  rows = src_img1->height;
  velx = cvCreateMat (rows, cols, CV_32FC1);
  vely = cvCreateMat (rows, cols, CV_32FC1);
  cvSetZero (velx);
  cvSetZero (vely);
  criteria = cvTermCriteria (CV_TERMCRIT_ITER | CV_TERMCRIT_EPS, 64, 0.01);
 
  // et calculée (2) Les flux optique (SH) 
  cvCalcOpticalFlowHS (src_img1, src_img2, 0, velx, vely, 100.0, criteria);
  // dessin (3) flux optique ( HS
  for (i = 0; i < cols; i += 5) {
    for (j = 0; j < rows; j += 5) {
      dx = (int) cvGetReal2D (velx, j, i);
      dy = (int) cvGetReal2D (vely, j, i);
      cvLine (dst_img1, cvPoint (i, j), cvPoint (i + dx, j + dy), CV_RGB (255, 0, 0), 1, CV_AA, 0);
    }
  }
 
  // (4)Calcul de l'optique à circulation / / (LK) 
  cvCalcOpticalFlowLK (src_img1, src_img2, cvSize (15, 15), velx, vely);
  // (5)dessin (LK) le flux / / sont (5) calcul 
  for (i = 0; i < cols; i += 5) {
    for (j = 0; j < rows; j += 5) {
      dx = (int) cvGetReal2D (velx, j, i);
      dy = (int) cvGetReal2D (vely, j, i);
      cvLine (dst_img2, cvPoint (i, j), cvPoint (i + dx, j + dy), CV_RGB (255, 0, 0), 1, CV_AA, 0);
    }
  }
 
  // (6) Affichage des) flux optique 
  cvNamedWindow ("ImageHS", 1);
  cvShowImage ("ImageHS", dst_img1);
  cvNamedWindow ("ImageLK", 1);
  cvShowImage ("ImageLK", dst_img2);
  cvWaitKey (0);
 
  cvDestroyWindow ("ImageHS");
  cvDestroyWindow ("ImageLK");
  cvReleaseImage (&src_img1);
  cvReleaseImage (&src_img2);
  cvReleaseImage (&dst_img1);
  cvReleaseImage (&dst_img2);
  cvReleaseMat (&velx);
  cvReleaseMat (&vely);
 
  return 0;
}
je veux lire à partir d'une camera