前段時間我安裝了OpenCV 2.4.12,大約2天前安裝了OpenCV 3.2。在我完成安裝程序(this是我所遵循的指南)後,我的舊openCV代碼會一直告訴我在編譯它時找不到cv函數。顯然是一個鏈接器錯誤。後來我意識到我應該使用2.4版本,所以我刪除了我的主目錄中的opencv-3.2.0文件夾,並再次在我的2.4.12文件夾中運行sudo make install。這似乎工作,但再次無法找到簡歷功能。OpenCV重裝問題
所以這是我自己到目前爲止發現的。
我在CMakeLists.txt中打印了一些變量,而我的OpenCV_INCLUDE_DIRS指向/ usr/include/opencv/usr/include,這顯然是問題所在。但是現在我該如何解決它?我試圖手動設置該變量使用此線
集($ {OpenCV_INCLUDE_DIRS}的/ usr /包括/ OpenCV的/)
但同樣,也沒有用。
這裏是我的CMakeLists.txt:
cmake_minimum_required(VERSION 2.8)
project(DisplayImage)
find_package(OpenCV REQUIRED)
set(${OpenCV_INCLUDE_DIRS} /usr/include/opencv/)
include_directories(${OpenCV_INCLUDE_DIRS})
MESSAGE(STATUS "CMAKE_ROOT: " ${OpenCV_INCLUDE_DIRS})
add_executable(DisplayImage DisplayImage.cpp)
SET(OpenCV_LIBS opencv_core opencv_highgui opencv_imgproc)
target_link_libraries(DisplayImage ${OpenCV_LIBS})
MESSAGE(STATUS "CMAKE_ROOT: " ${OpenCV_LIBS})
這裏是我使用的CMake的配置。
cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -DFORCE_VTK=ON -DWITH_TBB=ON -DWITH_V4L=ON -DWITH_QT=ON -DWITH_OPENGL=ON -DWITH_CUBLAS=ON -DCUDA_NVCC_FLAGS="-D_FORCE_INLINES" -DWITH_GDAL=ON -DWITH_XINE=ON -DBUILD_EXAMPLES=ON ..
最後,這裏是我的配置file。
編輯:另外,如果我跑 的gcc -o analyze_video.cpp objDetection -lopencv_core -lopencv_imgproc -lopencv_objdetect -lopencv_highgui
然後一切正常。所以我建立了庫,但是我的CMake配置出了問題。
@CraigScott,感謝您的編輯。 –
啊哈,我以爲雙重安裝已經添加了包含路徑,因此包含路徑變得無效。我可能會在哪個文件夾中找到二進制文件?爲什麼INCLUDE_DIRS變量會指向包含目錄的基礎? – Tri
@Tri,讓我爲您提供一種使用OpenCV構建最小程序的方法: OpenCV build: 'cmake -DCMAKE_BUILD_TYPE = RELEASE .. && make -j4 && sudo make install'。 App的CMakeLists只有兩行包含OpenCV:'find_package(OpenCV REQUIRED)''target_link_libraries($ {CMAKE_PROJECT_NAME} $ {OpenCV_LIBS})'。 並且不需要FindOpenCV.cmake或其他東西。 我想如果你能自己重現它。這是我的工作腳本,如果我想建立某些OpenCV模塊:goo.gl/p1snyO。但要小心,檢查需要啓用哪些模塊。 –