Bonjour,
Avec la version 2.4.2 de OpenCV, j'essaie de réaliser une extraction de points d'intérêt de l'image ci-jointe via la méthode SURF.
Voici mon code :
A l'exécution, j'obtiens une exception sur la méthode cvExtractSURF :
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 int main(int argc, const char* argv[]) { IplImage* gysImg = cvLoadImage("./../Images/test.jpg", CV_LOAD_IMAGE_GRAYSCALE); cvNamedWindow("Grayscale image"); cvShowImage("Grayscale image", gysImg); // Extract keypoints with SURF algorithm CvMemStorage* storage = cvCreateMemStorage(0); CvSeq* keypoints = NULL; CvSeq* descriptors = NULL; CvSURFParams params = cvSURFParams(400); cvExtractSURF(gysImg, NULL, &keypoints, &descriptors, storage, params); cvDestroyWindow("Grayscale image"); // Free memory cvRelease((void **)&keypoints); cvReleaseMemStorage(&storage); cvReleaseImage(&gysImg); return 0; }
La pile d'appels semble s'être arrêtée sur KernelBase.dll!755ec41f().Exception non gérée à 0x755ec41f dans Test.exe*: Exception Microsoft C++*: cv::Exception à l'emplacement mémoire 0x0038f3f0..
J'ai essayé de voir si le problème avait déjà été rencontré mais je n'ai trouvé encore aucune solution.
Quelques informations trouvées :
- Il semblerait que dans les versions 2.4.0 et 2.4.1, cette méthode soit buguée mais je suis en 2.4.2.
- La méthode peut crasher si l'image n'a pas de points d'intérêt (je ne pense pas que ce soit le cas ici).
Avez-vous une idée ?
Merci beaucoup
Edit : J'ai obtenu finalement le message suivent en console :
.OpenCV Error : The function/feature is not implemented (OpenCV was built without SURF support) in unknown function, file C:\Users\.......\OpenCV232\modules\legacy\src\feature2d.cpp, line 77
OpenCV a pourtant bien été compilé.
En fait, le problème était qu'il manquait l'appel à la méthodedéclarée dans le fichier nonfree.hpp. Il reste ensuite à ajouter la dll nonfree242d pour le mode debug et ça fonctionne!
Code : Sélectionner tout - Visualiser dans une fenêtre à part cv::initModule_nonfree()
Partager