【问题标题】:cmake find_package (OpenCV) always use OpenCV 2.4 even I specify PATHS to OpenCV 3.3cmake find_package (OpenCV) 始终使用 OpenCV 2.4,即使我将 PATHS 指定为 OpenCV 3.3
【发布时间】:2018-05-20 08:00:26
【问题描述】:

我想通过 CMakeLists.txt 使用 OpenCV 3,CMakeLists.txt 如下:

set(OpenCV_ROOT /usr/local/opencv3)
set(OpenCV_INCLUDE_DIRS ${OpenCV_ROOT}/include)
set(OpenCV_LIBRARIES "${OpenCV_ROOT}/lib")
message("find ${OpenCV_INCLUDE_DIRS}")
.....
include_directories(${OpenCV_INCLUDE_DIRS}) 
target_link_libraries(main ${OpenCV_LIBRARIES})

在以下位置找到 OpenCV:/usr/local/include/opencv;/usr/local/include

但是OpenCV 3的路径是/usr/local/opencv3。看起来 指定的路径不起作用,CMakeLists.txt 使用默认的 opencv 2.4 而不是 OpenCV 3。

如何解决这个问题呢?我整天都在努力。

【问题讨论】:

  • 您忘记在代码中显示find_package() 调用。在尝试在新位置找到 OpenCV 之前,您是否清理过构建目录(或者至少是 CMakeCache.txt 文件)?您使用哪个FindOpenCV.cmake 脚本?该脚本确定了指定 OpenCV 的非默认位置的方法。如果您不使用FindOpenCV.cmake 脚本,那么指定包位置的方法包括: 1. 设置OpenCV_DIR 变量。 2.设置CMAKE_PREFIX_PATH变量。 3.为find_package()调用指定PATHS选项。
  • 谢谢!我删除了 CMakeCache.txt 和 CMakeFiles,并尝试使用 find_package(OpenCV PATHS=/usr/local/opencv3),但它无法解决我的问题。然后我试了set(OpenCV_DIR /usr/local/opencv3),还是不能解决。 “/usr/local/opencv3”是我安装opencv3的路径。
  • 正确:find_package(OpenCV PATHS /usr/local/opencv3)(没有等号)。如果您不使用 FindOpenCV.cmake 脚本,这将起作用。不要忘记再次清除缓存。

标签: opencv cmake opencv3.3


【解决方案1】:

如果您是从源代码构建的,您唯一需要做的就是将变量添加到您的 .bashrc 文件中,就像这里一样。

export PATH=$PATH:~/installation/OpenCV

你的 CMakeLists.txt 会找到它

【讨论】:

    猜你喜欢
    • 2015-10-30
    • 1970-01-01
    • 2018-02-05
    • 2014-01-24
    • 2012-06-07
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多