我想編譯OpenCV 3.0的MATLAB綁定,即從Github當前構建。我不斷收到以下錯誤:爲OpenCV編譯MATLAB綁定
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
這發生在多個文件中。我發現這thread,其中討論了一些補救措施,即。在bridge.hpp文件中添加一些typedefs,但編譯時會導致更多錯誤。我也發現這個thread建議刪除有問題的.cpp文件和編譯。這導致了無錯誤的編譯,然後是通常的make install。然而,從MATLAB內部調用任何OpenCV的功能現在將會導致錯誤,如:
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
另一個錯誤示例:
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
就如何解決這些問題的任何幫助,非常感謝!
@AruniRC - 你開始一個賞金,因爲「這個問題還沒有收到足夠的重視」 - 但你不提供有關答案和建議,您的任何反饋到這裏......這不是正確的方式來獲得關注。 – Shai
我能夠編譯並鏈接所有內容,沒有任何錯誤。我只是確保我編譯時使用的每個庫/ sdks都具有相同的體系結構。例如,如果你的matlab是64位的,那麼確保你在CMake中選擇了64位編譯器,並找到一個64位的Python。但是,不知何故,matlab文件不伴隨他們的mex文件。我可以看到生成的所有.cpp文件,但編譯和安裝後沒有編譯mex。 – masad