2014-01-29 57 views
0

成功編譯OpenCV的95%之後,我得到的錯誤錯誤而編譯/鏈接OpenCV的Matlab的源文件

(...) 
[ 95%] Built target opencv_videostab 
[ 95%] Generating Matlab source files 
[ 95%] Built target opencv_matlab_sources 
[ 95%] Compiling Matlab source files. This could take a while... 
CMake Error at compile.cmake:47 (message): 
    Failed to compile logPolar: /usr/bin/ld: cannot find -lopencv_core 

    /usr/bin/ld: cannot find -lopencv_imgproc 

    /usr/bin/ld: cannot find -lopencv_ml 

    /usr/bin/ld: cannot find -lopencv_highgui 

    /usr/bin/ld: cannot find -lopencv_objdetect 

    /usr/bin/ld: cannot find -lopencv_flann 

    /usr/bin/ld: cannot find -lopencv_features2d 

    /usr/bin/ld: cannot find -lopencv_photo 

    /usr/bin/ld: cannot find -lopencv_video 

    /usr/bin/ld: cannot find -lopencv_videostab 

    /usr/bin/ld: cannot find -lopencv_calib3d 

    /usr/bin/ld: cannot find -lopencv_stitching 

    /usr/bin/ld: cannot find -lopencv_superres 

    /usr/bin/ld: cannot find -lopencv_nonfree 

    collect2: ld returned 1 exit status 



     mex: link of ' "logPolar.mexa64"' failed. 





make[2]: *** [modules/matlab/compile.proxy] Error 1 
make[1]: *** [modules/matlab/CMakeFiles/opencv_matlab.dir/all] Error 2 
make: *** [all] Error 2 

這讓我困惑,因爲據我瞭解所有的這些應該已經早些時候編譯建立過程。使用的cmake命令是

cmake -D MATLAB_ROOT_DIR=/usr/lib/matlab2012a/ -D CMAKE_INSTALL_PREFIX=/home/user .. 

回答

2

我有同樣的問題,我猜這是爲什麼它尚未包含在官方發行版中。我的解決辦法如下:

  1. 編譯OpenCV的不Matlab的模塊,對我來說,這是根本就沒有指定Matlab的地方位於,因爲它在標準位置是不是,但它應該通過設置變量是可能的cmake或修改CMake配置文件。
  2. 安裝OpenCV(make install),這將安裝必要的庫。
  3. 再次運行cmake,這次包括Matlab選項,運行make。
  4. 此時,編譯一些生成的Mex源文件時出現一堆錯誤。我只是刪除了無法編譯的文件。這些都是我必須要刪除的文件:
createAlignMTB.cpp 
createCalibrateDebevec.cpp 
createCalibrateRobertson.cpp 
createLineSegmentDetector.cpp 
createMergeDebevec.cpp 
createMergeMertens.cpp 
createMergeRobertson.cpp 
createTonemap.cpp 
createTonemapDrago.cpp 
createTonemapDurand.cpp 
createTonemapMantiuk.cpp 
createTonemapReinhard.cpp 
findCirclesGrid.cpp 

我不需要任何人,希望同樣是真正適合你,如果你這樣做,你將需要解決錯誤。 (源文件一旦生成後似乎不會再生,因此可以安全地修改)

  1. make install!
  2. ???
  3. 利潤!
+0

不幸的是,這似乎並沒有爲我工作。 – haroba

1
When encountering an error with building something with cmake, it's always a good idea to rerun it with VERBOSE=1 option. 

我也有類似的問題,以「在/ usr /斌/勞工處:找不到......」,使VERBOSE = 1表明,關於OpenCV的庫鏈接路徑不正確地設置爲L $ {ROOT_TO_OPENCV_BUILD}/lib/RelWithDebInfo,而它應該是L $ {ROOT_TO_OPENCV_BUILD}/lib。 所以這個問題是在CMake配置文件中的某處。

超級骯髒的解決方法是簡單地創建一個像這樣的假鏈接 cd $ {ROOT_TO_OPENCV_BUILD}/lib; ln -s。 RelWithDebInfo 這將使編譯continue.fails我稍後createTonemapReinhard.cpp 錯誤:'Ptr_TonemapReinhard'未在此範圍內聲明 顯然,matlab mex模塊尚未準備好。

+0

我會試試這個。謝謝! – haroba