Bonjour,
je rencontre quelque difficulté dans l'utilisation d'un Mat avec la method match de la classe FlannBasedMatcher.
j'ai un vecteur contenant une matrice de descripteur (la matrice a été linéariser)
je cherche a allouer un objet Mat avec ce vecteur puis l'utiliser la méthode match de la classe FlannBasedMatcher (match avec un descripteur qui lui a été calculé depuis OpenCV)


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
 
// methode de lecture des descripteur
double nbPoints = 0;
double* Features;
// chargement des descripteurs 
FILE* doc = fopen(path_Model, "rb");
fread(&nbPoints, sizeof(nbPoints), 1, doc);
Features = (double*)malloc(nbPoints * 64 * sizeof(double));
fread(Features, sizeof(double), nbPoints * 64, doc);
 
fclose(doc);
// les données sont bien lu, pas de problème de ce coté la
 
Model_descriptors = Mat(nbPoints, 64, CV_32F, Features_tmp);
 
 
	for (int i = 0; i < Model_descriptors.rows; i++)
	{
		double* ptri = Model_descriptors.ptr<double>(i);
		for (int j = 0; j < Model_descriptors.cols; j++)
		{
			ptri[j] = Features[i*Model_descriptors.cols + j];
		}
 
	}
//méthode calculant les descripteur sur une image courante
 
SurfFeatureDetector detector(Params.ScoreDetecteurImage, 4, 4, false, false);
 
 
	detector.detect(I_cur, Image_keypoints);
 
	if (Image_keypoints.empty())
	{
		return false;
	}
 
	Image_keypoints = select_strongest(Params.NbPointImage, Image_keypoints);
 
	if (Image_keypoints.empty())
	{
		return false;
	}
 
	// Extract Features
	SurfDescriptorExtractor extractor;
 
 
	extractor.compute(I_cur, Image_keypoints, Image_descriptors);
 
// methode réalisant le matching
FlannBasedMatcher matcher;
	std::vector< DMatch > matches;
 
 
	try
	{
		cout << "Image_descriptors" << endl << Image_descriptors(Range(0, 1), Range(0, 63));
		cout << "Model_descriptors" << endl << Model_descriptors(Range(0, 1), Range(0, 63));
		//double a=Image_descriptors.at(Point(0, 0));
		matcher.match(Model_descriptors, Image_descriptors, matches);
	}
	catch (Exception ex)
	{
		cout << ex.msg;
	}



j'obtiens une exception qui n'est pas attraper et le message suivant apparait dans ma console :
Assertion failed : result.full<>, file c:\builds\2_4_packslave-win64-vc12-shared\opencv\modules\flann\include\opencv2\flann\kdtree_index.h line 465
merci pour votre aide