我以前編譯的OpenCV 3.0成功地追蹤this guide,其基本上由以下步驟:如何在OS X上使用額外的模塊來編譯OpenCV?
- 下載的所有先決條件(的XCode,命令行工具,CMake和OpenCV的源)
- 建立靜態庫配置CMake的(通過GUI)其中:
- 取消選中BUILD_SHARED_LIBS
- 取消選中BUILD_TESTS
- 添加SDK路徑CMAKE_O SX_SYSROOT(如果它很重要,我使用
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk
)。 - 添加到x86_64的CMAKE_OSX_ARCHITECTURES(重點煤礦,這似乎是這個問題,我敢肯定,我已經按照此步驟)
- 取消選中WITH_1394
- 取消選中WITH_FFMPEG
- 配置和生成通過CMake,然後從CLI訪問
make
和sudo make install
。
以上所有的單獨工作正常。
我現在正在尋找與the extra modules編譯OpenCV。根據他們的閱讀材料,它應該像在CMake中填寫OPENCV_EXTRA_MODULES_PATH
到<opencv_contrib>/modules
一樣簡單,然後照常建造。
我按照上面列出的步驟添加了參數,並且構建OpenCV成功,但是,當試圖在程序中使用其中一個額外模塊(即cv::ximgproc::createStructuredEdgeDetection
,如果它很重要)時,出現以下錯誤編譯:
Undefined symbols for architecture x86_64:
"cv::ximgproc::createStructuredEdgeDetection(cv::String const&, cv::Ptr<cv::ximgproc::RFFeatureGetter const>)"
, referenced from:
_main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我已經包括了頭,其中應包括以上:
#include <opencv2/ximgproc.hpp>
我通過了XCode,在那裏我給自己定的/usr/local/include
和圖書館額外的頭搜索路徑編譯012的搜索路徑該項目的,我在這裏錯過了什麼?
標準OpenCV功能正常工作。
可能是什麼問題,我將如何去解決它?
您是否將contrib庫添加到了您的依賴項?其餘似乎正確 – Miki
@Miki非常感謝您的評論,我錯過了。我本來有其他連接標誌'-lopencv_calib3d -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lopencv_ml -lopencv_objdetect -lopencv_photo -lopencv_shape -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videoio -lopencv_videostab',但我不包括' -lopencv_ximgproc'。編譯成功後添加後者。有沒有簡單的方法來找出所有提供的包含? – Nit
您應該在您的'/install /'文件夾下找到所有庫。 '/install/x86/vc12/staticlib'在我的版本中 –
Miki