SURF-OpenCV-Funktion ist nicht implementiert
Wenn ich versuche, führen Sie das Beispiel find_obj.cpp
oder jede SURF-OpenCV-Programm erhalte ich die folgende Fehlermeldung in der Eingabeaufforderung beim ausführen des Codes. Das Projekt baut ohne Fehler und Warnungen. Ich bin mit VS2011 beta, OpenCV 2.4 und windows7.
Fehlermeldung:
OpenCV Error: The function/feature is not implemented < OpenCV was built without SURF support> in unknown function,file ..\..\..\src\opencv\modules\legacy\src\features2d.cpp, line 77
Ich versucht, den Aufbau der OpenCV 2.4 wieder mit Cmake und dann VS2011 im debug-Modus und dann die lib-Pfade in der IDE, aber immer noch kein Ergebnis.
Wie kann ich das beheben?
#include <opencv2/objdetect/objdetect.hpp>
#include <opencv2/features2d/features2d.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/legacy/legacy.hpp>
#include <opencv2/legacy/compat.hpp>
#include <opencv2/flann/flann.hpp>
#include <opencv2/calib3d/calib3d.hpp>
#include <opencv2/nonfree/features2d.hpp>
#include <opencv2/nonfree/nonfree.hpp>
using namespace std;
using namespace cv;
int main()
{
cv::initModule_nonfree();//THIS LINE IS IMPORTANT
IplImage *image1 = cvLoadImage("C:\\SURF\\1.jpg");
IplImage *image2 = cvLoadImage("C:\\SURF\\2.jpg");
CvMemStorage* memoryBlock = cvCreateMemStorage();
CvSeq* image1KeyPoints;
CvSeq* image1Descriptors;
CvSeq* image2KeyPoints;
CvSeq* image2Descriptors;
//Only values with a hessian greater than 500 are considered for keypoints
CvSURFParams params = cvSURFParams(500, 1);
cvExtractSURF(image1, 0, &image1KeyPoints, &image1Descriptors, memoryBlock, params);
cvExtractSURF(image2, 0, &image2KeyPoints, &image2Descriptors, memoryBlock, params);
return 0;
}
InformationsquelleAutor rotating_image | 2012-06-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entnommen diese Antwort (warum nicht Sie google zu Ihrer Frage, bevor Sie gefragt?):
Den SIFT-und SURF-code wurde verschoben in OpenCV v2.4 um ein neues Modul namens
nonfree
. Stellen Sie sicher, dass Sie die Verknüpfung (DLL in Windlows). In linux ist diese Bibliothek heißtlibopencv_nonfree.so
.die IDE...habe ich den Pfad zu den C:\OpenCV2.4\opencv\build\x86\vc10\lib...i gerettet haben die opencv2.4 in c-Laufwerk...der bin-Ordner enthält alle dll-wo habe ich überprüft, es enthält die opencv_nonfree240.dll...und in der zusätzliche Abhängigkeiten-ich habe den opencv_nonfree240.lib
Bibliothek-Verzeichnisse = C:\OpenCV2.4\opencv\build\x86\vc10\lib zusätzliche Abhängigkeiten = opencv_nonfree240.lib, das ist meine Einstellung in VS2011
ich habe alles getan, was in d notwendig...alle anderen Programme, die Verwendung von opencv-Bibliotheken funktionieren ..ich donno warum dies so ist, zeigt problem...ich m posting eine kleine Beispielcodes, die ich schrieb
danke astor für Ihre Richtlinien...das problem habe gelöst...war ich forgettin die cv::initModule_nonfree() line...
InformationsquelleAutor ArtemStorozhuk
Es ist kein bug. SURF befindet sich in unfreien Modul. Zu es verwenden, sollten Sie initialisieren unfreie Modul:
InformationsquelleAutor erlingmusan
Kürzlich, ich Lerne SURFEN. Für diese Frage, die Sie hinzufügen können, die opencv_nonfree240d.lib und opencv_nonfree240.lib zu Ihrem Projekt lib-Pfad.
InformationsquelleAutor fay
Für ubuntu das Skript in
https://help.ubuntu.com/community/OpenCV
kann geändert werden, für unfreie surfen/sift verwenden, durch hinzufügen
libopencv_nonfree
dem Ende des sudo apt-get-Befehl, und
-D BUILD_opencv_nonfree=
dem Ende der cmake-Befehl. Es funktioniert nur für mich nach der deinstallation alles, was ich finden konnte, Umgang mit opencv aus dem software-center. Übrigens das software-center hatte auch eine opencv unfreie Bibliothek, "libopencv-nonfree2.4", das schien nicht zu helfen Angelegenheiten.
Ich bin kein Experte in solchen Sachen, also ich weiß nicht, ob das was ich habe ist 100% richtig, aber es ermöglicht Befehle wie
surfen = cv2.SURFEN(400)
und
Eckdaten = surfDetector.erkennen(im)
ausführen, die nicht zuvor (die erste verursacht eine 'nicht gefunden' - Typ Fehler, während die zweite verursacht einen segmentation Fault).
Die version von opencv.sh die mir erlaubt, unfreie surfen/sift eingefügt http://pastebin.com/sQzDdx5i
Die version, die jetzt funktioniert ist opencv-2.4.9 aber möglicherweise würde dies auch für andere Versionen wie das Skript scheint zu sein, etwas Agnostiker wie den lib-Namen.
InformationsquelleAutor jeremy_rutman