CMake发现OpenCV的版本不正确

时间:2016-01-08 23:38:54

标签: macos cmake opencv3.0

我安装了多个版本的OpenCV,而CMake发现了错误的版本。我使用brew安装了opencv和opencv3,它们存在于以下路径中:

$(document).ready(function() {
  $("#menu a").click(function() { 
    var page = $(this).attr("href");
    $.ajax({
      url: "pages/" + page,
      cache: false,
      success: function(html) {
        afficher(html, page);
        history.pushState({ key: 'value'}, 'hash', page);
      }, 
      error:function(XMLHttpRequest, textStatus, errorThrown) {
        afficher("erreur lors du chagement de la page");
      }
    });
    return false;
  });

  $('#container').on('click', '.vs-transform a', function() {
    var page = $(this).attr("href");
    $.ajax({
      url: "pages/" + page,
      cache: false,
      success: function(html) {
        afficher(html, page);
        history.pushState({key : 'value'}, 'hash', page);
      },
      error: function(XMLHttpRequest, textStatus, errorThrown) {
        afficher("erreur lors du chagement de la page");
      }
    });
    return false;
  }); 

  window.onpopstate = function(event) {
    if (event.state === null) {
      // Here have to make the same fadeout-in effect but how to get my data variable? 
    }
  };
});


function afficher(data, page) {
  $("#container").delay( 100 ).fadeOut(400, function() {
    $("#container").empty();                
    $("#container").append(data);
    $("#container").fadeIn(500);
  });
}

我的CMakeLists.txt如下所示:

/usr/local/opt/opencv3
/usr/local/opt/opencv

我正在使用OpenCV_DIR来指向我想要使用的OpenCV的位置(在此示例中,它是在100%确定此变量指向正确位置之前立即设置的)。

我的输出是:

cmake_minimum_required(VERSION 2.8)
set(ENV{OpenCV_DIR} "/usr/local/opt/opencv3")

project(TestProject)

#OpenCV
find_package( OpenCV 3 REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )

MESSAGE ( STATUS "Found OpenCV: ${OpenCV_VERSION}" )
MESSAGE ( STATUS "OpenCV_INCLUDE_DIRS= ${OpenCV_INCLUDE_DIRS}" )
MESSAGE ( STATUS "OpenCV_DIR= $ENV{OpenCV_DIR}" )

所以,它找到了正确版本的OpenCV(3.0.0),但是包含路径被设置为其他一些opencv,在这种情况下/ usr / local / include / opencv指向/ usr / local / opt / opencv,这是2.4.8版本。

因此,我的程序都没有找到要包含的正确文件!有没有人知道如何告诉CMake要查找哪个版本,如果OpenCV_DIR环境变量似乎不起作用?

2 个答案:

答案 0 :(得分:2)

您可以在find_package中明确分配路径。例如,

find_package( OpenCV 3 REQUIRED PATHS "/usr/local/opt/opencv3" )

答案 1 :(得分:1)

如所示,OP正在使用cMake V2.8。因此,以下内容适用于包括所需的目录。

#OpenCV
find_package( OpenCV 3 REQUIRED )
include_directories([BEFORE] "/usr/local/opt/opencv3")  # your cv2 desired folder
                                                        #            stated here.

[BEFORE]参数通知cMake该特定文件夹首先使用,而不是其他CV文件夹。

对于高于v2.8的cMake,您应该使用include_directories,而应使用以下内容:

target_include_directories(test PRIVATE ${YOUR_DIRECTORY})