前段时间我安装了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。但要小心,检查需要启用哪些模块。 –