2016-06-08 85 views
3

我安装了两个opencv,一个在/ usr/local中,另一个在/ usr中。 因此,对于Opencv2.4.10,/ usr/share/OpenCV具有OpencvConfig.cmake,而对于Opencv3.1.0,/ usr/local/share/OpenCV具有OpencvConfig.cmake。 在我的项目的cmake我设置OPencv2.4.10路径作为使用cmake在项目中链接Opencv

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。 我该如何纠正它? 谢谢

+0

变量'OpenCV_LIBS'和'OpenCV_INCLUDE_DIRS'是什么内容? – Tsyvarev

回答

2

我想你安装opencv使用apt-get安装,告诉我,如果我错了。

首先显示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位于之前编译的编译目录中。

干杯。

+0

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