Bonjour à tous,

Je cherche à utiliser la fonction remap() à partir de la sortie CV_32FC2 de la fonction cvCalcOpticalFlowFarneback.
Je parviens à un résultat, mais totalement aberrant à partir du pseudo code suivant :

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
cv::Mat input_1;
cv::Mat input_2;
 
cv::Mat SRC_disto;
cv::Mat DST_disto;
 
gray = cvCreateMat(frame->height, frame->width, CV_8UC1);
prevgray = cvCreateMat(gray->rows, gray->cols, gray->type);
flow = cvCreateMat(gray->rows, gray->cols, CV_32FC2);
 
 
input_1.create(gray->rows, gray->cols, CV_32FC2);
 
SRC_disto.create(gray->rows, gray->cols, gray->type);
DST_disto.create(gray->rows, gray->cols, gray->type);
 
 
cvCalcOpticalFlowFarneback	prevgray, gray, flow, 
						0.1,
						15, 
						75,
						3,
						5,
						0.2,
						10
);
 
 
SRC_disto = cv::Mat(frame, true);
input_1 = cv::Mat(flow, true);
 
 
remap(
		SRC_disto,
		DST_disto,
		input_1,
		input_2,
		INTER_CUBIC, 
		BORDER_TRANSPARENT
 
		); 
 
 
CvMat* resultat =  &CvMat( DST_disto );
 
cvShowImage("flow", resultat);
Quelqu'un voit-il ce qui ne va pas dans mon code ??

Merci d'avance