2014-02-28 7 views
5

Ich versuche, die MATLAB-Bindungen für OpenCV 3.0 zu kompilieren, d. H. Den aktuellen Build von Github. Ich erhalte die folgenden Fehler:MATLAB-Bindings für OpenCV kompilieren

CMake Error at /opencv/modules/matlab/compile.cmake:47 (message): 
    Failed to compile createCalibrateDebevec: 
    /opencv/build/modules/matlab/src/createCalibrateDebevec.cpp: 
    In function ‘void mexFunction(int, mxArray**, int, const mxArray**)’: 

    /opencv/build/modules/matlab/src/createCalibrateDebevec.cpp:46:3: 
    error: ‘Ptr_CalibrateDebevec’ was not declared in this scope 

Dies tritt bei mehreren Dateien auf. Ich fand diese thread, die ein paar Heilmittel diskutiert, nämlich. Hinzufügen von typedefs zur Datei bridge.hpp, aber dies führt zu noch mehr Fehlern beim Kompilieren. Ich fand auch dieses thread, das das Entfernen der problematischen CPP-Dateien und das Kompilieren vorschlug. Dies führte zu einer fehlerfreien Kompilierung gefolgt von der üblichen make install. Doch von innen MATLAB jede OpenCV-Funktion aufrufen führt nun zu Fehlern wie:

If = cv.dft(I, 'flags', cv.DFT_COMPLEX_OUTPUT); 
Error using dft 
cv::exception caught: 
/home/xxx/opencv-master/modules/core/src/dxt.cpp:1760: error: (-215) 
type == CV_32FC1 || type == CV_32FC2 || type == CV_64FC1 || type == CV_64FC2 
in function dft 

ein anderer Fehler Beispiel:

im_denoise = cv.fastNlMeansDenoising(im_noise, 18); 
Error using fastNlMeansDenoising 
cv::exception caught: 
/home/xxx/opencv-master/modules/photo/src/fast_nlmeans_denoising_invoker.hpp:146: 
error: (-215) almost_dist2weight_[0] == fixed_point_mult_ in function 
FastNlMeansDenoisingInvoker 

Jede Hilfe, wie diese Probleme zu lösen, ist sehr willkommen!

+0

@AruniRC - Sie eine Prämie begonnen, weil „diese Frage nicht genug Aufmerksamkeit empfangen hat“ -, aber sie bieten keine Feedback in Bezug auf Antworten und Vorschläge, die Sie komm her ... Das ist nicht der richtige Weg, um Aufmerksamkeit zu bekommen. – Shai

+0

Ich konnte alles kompilieren und verlinken, ohne Fehler. Ich habe nur sichergestellt, dass ich die gleiche Architektur für jede der Bibliotheken/SDKs hatte, die beim Kompilieren verwendet wurden. Zum Beispiel, wenn Ihr Matlab 64bit ist, dann stellen Sie sicher, dass Sie einen 64bit Compiler in CMake ausgewählt haben und auch ein 64bit Python gefunden wird. Irgendwie werden die Matlab-Dateien jedoch nicht von ihren mex-Dateien begleitet. Ich kann sehen, dass alle .cpp-Dateien generiert werden, jedoch keine kompilierten Metadaten nach dem Kompilieren und Installieren. – masad

Antwort

3

In Bezug auf die 'cv::exception caught' Fehler, die Sie erhalten: es scheint, wie cv wird das Eingangsbild erwarteten Punkttypen sein schwimmenden (entweder single oder double, 'CV_32FC1' oder 'CV_64FC1' respectively).
Versuchen Sie, Ihr Eingangsbild I oder im_noise in Fließkommawerte zu konvertieren, indem Sie im2single oder im2double verwenden, und prüfen Sie, ob diese Fehler auftreten.

+0

Das warf neue Fehler. Ich schätze, ich werde nur darauf warten, dass die MATLAB-Bindungen zusammen mit der nächsten offiziellen Version von OpenCV veröffentlicht werden. Danke für die Antwort. –

2

Sie möchten vielleicht this tutorial in Bezug auf die Kompilierung Matlab Mex für die neuesten OpenCV 3.0 dev.

Es enthält auch vorkompilierte Binärdateien für die OpenCV Matlab sowie C++