使用cmake在项目中链接Opencv

4

我安装了两个OpenCV,一个在/usr/local,另一个在/usr。 因此,/usr/share/OpenCV中有OpencvConfig.cmake适用于Opencv2.4.10,而/usr/local/share/OpenCV中有OpencvConfig.cmake适用于Opencv3.1.0。 在我的项目的cmake中,我将OPencv2.4.10的路径设置为

cmake_minimum_required(VERSION 2.8)
project(five-point-nister)

SET("OpenCV_DIR" "/usr/share/OpenCV")
find_package( OpenCV REQUIRED )

add_executable(five-point-nister
    five-point.cpp precomp.cpp modelest.cpp)
target_link_libraries(five-point-nister ${OpenCV_LIBS})

但是当我编译项目时,项目会尝试链接到OPencv3.1.0,导致出现错误:

In file included from /usr/local/include/opencv2/core.hpp:59:0,
                 from /usr/local/include/opencv2/calib3d.hpp:47,
                 from /usr/local/include/opencv2/calib3d/calib3d.hpp:48,

按照正确的路径应该是/usr/include/opencv2,但现在是/usr/local/include/opencv2。所以我的项目仍然连接到Opencv3.1.0。 我该如何纠正它? 谢谢

变量 OpenCV_LIBSOpenCV_INCLUDE_DIRS 的内容是什么? - Tsyvarev
1个回答

6
我猜您使用apt-get install安装了OpenCV,如果我猜错了,请告诉我。
首先展示opencvConfig.cmake变量,例如OpenCV_INCLUDE_DIRS或OpenCV_LIBS。
您可以使用以下代码:
  cmake_minimum_required(VERSION 2.8)
  project(five-point-nister)
  SET("OpenCV_DIR" "/usr/share/OpenCV")
  find_package( OpenCV REQUIRED )

  MESSAGE(STATUS "Include dirs ${OpenCV_INCLUDE_DIRS}")
  MESSAGE(STATUS "LINK LIBRARIES ${OpenCV_LIBS}")

  add_executable(five-point-nister
  five-point.cpp precomp.cpp modelest.cpp)
  target_link_libraries(five-point-nister ${OpenCV_LIBS})

这些变量位于 OpencvConfig.cmake 文件中,例如:
#    This file will define the following variables:
#      - OpenCV_LIBS                     : The list of all imported targets for OpenCV modules.
#      - OpenCV_INCLUDE_DIRS             : The OpenCV include directories.
#      - OpenCV_COMPUTE_CAPABILITIES     : The version of compute capability.
#      - OpenCV_ANDROID_NATIVE_API_LEVEL : Minimum required level of Android API.
#      - OpenCV_VERSION                  : The version of this OpenCV build: "2.4.9"
#      - OpenCV_VERSION_MAJOR            : Major version part of OpenCV_VERSION: "2"
#      - OpenCV_VERSION_MINOR            : Minor version part of OpenCV_VERSION: "4"
#      - OpenCV_VERSION_PATCH            : Patch version part of OpenCV_VERSION: "9"
#      - OpenCV_VERSION_TWEAK            : Tweak version part of OpenCV_VERSION: "0"

然而,我建议您一些提示:

使用cmake-gui来定义您的OPENCV_DIR目录,因为它是您的静态目录路径。

  • 不要使用apt-get安装openCV,有时更新不足够。

  • 尝试编译opencv或下载预构建文件http://opencv.org/downloads.html

  • 编译opencv并在您之前编译的构建目录中设置您的应用程序项目中的OPENCV_DIR。

干杯。


我从源代码构建了Opencv。这就是为什么我可以手动设置Opencv的安装文件夹路径。谢谢,我会尝试你的建议。 - batuman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接