【问题标题】:Linking Opencv in a project using cmake使用 cmake 在项目中链接 Opencv
【发布时间】:2016-06-08 01:29:53
【问题描述】:

我安装了两个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的内容是什么?

标签: c++ opencv cmake


【解决方案1】:

我猜你是用 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 install openCV,有时更新不够。

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

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

干杯。

【讨论】:

  • 我从 Opencv 的源代码构建。这就是为什么我可以手动设置 Opencv 的安装文件夹路径。谢谢,我会试试你的建议。
猜你喜欢
  • 2020-09-19
  • 2013-03-17
  • 2018-03-15
  • 1970-01-01
  • 2019-09-04
  • 1970-01-01
  • 2021-10-29
  • 2022-01-06
相关资源
最近更新 更多