7

我正在尝试构建依赖于 OpenCV 的项目。我使用 macports 安装了 Opencv,当我尝试构建项目时,cmake 给出以下输出:

CMake Error at CMakeLists.txt:47 (FIND_PACKAGE):
  By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "OpenCV", but
  CMake did not find one.

  Could not find a package configuration file provided by "OpenCV" with any
  of the following names:

    OpenCVConfig.cmake
    opencv-config.cmake

  Add the installation prefix of "OpenCV" to CMAKE_PREFIX_PATH or set
  "OpenCV_DIR" to a directory containing one of the above files.  If "OpenCV"
  provides a separate development package or SDK, be sure it has been
  installed.

我对这个问题进行了一些搜索并添加了以下环境。$HOME/.profile我的文件的变量

export DYLD_LIBRARY_PATH=/opt/local/lib:$DYLD_LIBRARY_PATH
export CMAKE_PREFIX_PATH=/opt/local

没有成功。我检查了一下,所有 opencv 文件都安装在 /opt/local/lib 和 /opt/local/include/opencv 目录中。OpenCVConfig.cmake在以下路径中也有 :

/opt/local/lib/cmake/OpenCVConfig.cmake

如何让cmake知道opencv的安装路径?以前我使用 cmake 自己构建 OpenCV 并安装到 /usr/local 中,然后它工作正常,没有任何其他修复。但是我在使用 ffmpeg 时遇到了一些问题,现在我改用 macports。

4

7 回答 7

9

另一个对我有用的选项是在 cmake opencv 目录中设置 env 值 OpenCV_DIR:

export OpenCV_DIR=/opt/local/lib/cmake/
于 2013-02-20T19:03:56.653 回答
1

macports传统上安装 OpenCV/opt/local/而不是标准的/usr/local/.

您的问题的解决方案在以下位置说明:

将“OpenCV”的安装前缀添加到 CMAKE_PREFIX_PATH 或将“OpenCV_DIR”设置为包含上述文件之一的目录。

在命令行中构建项目时,请确保执行:

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/local/lib/pkgconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/local/lib

CMAKE_PREFIX_PATH然后为 cmake设置标志:

cmake -D CMAKE_PREFIX_PATH=/opt/local ../
于 2012-10-17T17:24:17.897 回答
1

不是 MACPORT 问题,但有人可能会觉得这很有帮助。在这个问题中遵循@hugh-pearse 和@leszek-hanusz 的答案,稍作调整。我已经从 ubuntu 12.10 存储库 (libopencv- )*安装了 opencv,并且遇到了同样的问题。无法解决它export OpenCV_DIR=/usr/share/OpenCV/(因为我的 OpenCVConfig.cmake 在那里)。当我更改 OpenCVConfig.cmake 文件中的一些行时,它得到了解决:

# ======================================================
# Include directories to add to the user project:
# ======================================================

# Provide the include directories to the caller

#SET(OpenCV_INCLUDE_DIRS "${OpenCV_INSTALL_PATH}/include/opencv;${OpenCV_INSTALL_PATH}/include")

SET(OpenCV_INCLUDE_DIRS "/usr/include/opencv;/usr/include/opencv2")
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})

# ======================================================
# Link directories to add to the user project:
# ======================================================

# Provide the libs directory anyway, it may be needed in some cases.

#SET(OpenCV_LIB_DIR "${OpenCV_INSTALL_PATH}/lib")

SET(OpenCV_LIB_DIR "/usr/lib")

LINK_DIRECTORIES(${OpenCV_LIB_DIR})

这适用于我的 Ubuntu 12.10。请记住target_link_libraries(yourprojectname ${OpenCV_LIBS})在您的 CMakeLists.txt 中添加。

于 2014-03-07T01:56:46.207 回答
1

确保你已经编译了 OpenCV,一旦你编译,OpenCVConfig.cmake 将在 build 目录中生成。

按照以下步骤编译

然后 ,export OpenCV_DIR=<path to build directory with OpenCVConfig.cmake>

它现在应该可以工作了!

于 2018-12-05T14:30:55.260 回答
1

我终于阅读了 OpenCVConfig.cmake 文件的标题。它指示包含这些行以从外部项目中使用:

find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(MY_TARGET_NAME ${OpenCV_LIBS})

(将 include_directories 添加到 CMakeLists.txt 为我修复了它)

于 2015-09-04T21:46:37.897 回答
0

由于我在多用户服务器中编译了我自己的 OpenCV,所以我不能直接在 /usr/local 中安装 OpenCV 库,而是在我的主文件夹中,然后我会遇到完全相同的问题。

以下是我修复它的方法:

  1. 流程化 OpenCV 官方文档中的步骤:Using OpenCV with gcc and CMake

  2. 添加 displayImage 测试程序,并使用这个 CMake 文件

cmake_minimum_required(VERSION 2.8) project( DisplayImage ) find_package( OpenCV) add_executable( DisplayImage DisplayImage.cpp ) target_link_libraries( DisplayImage ${OpenCV_LIBS} )

  1. 发生了同样的错误,所以在我的 .tcshrc 中添加一个环境变量

setenv OpenCV_DIR "${folder where contains OpenCVConfig.cmake }" \# mine is: setenv OpenCV_DIR "~/local/OpenCV2.4.13/share/OpenCV"

于 2017-08-17T03:20:51.123 回答
0

我徒劳地尝试了上述所有想法。我最终找到了一种编译工作的方法:除了使用@kengregson 步骤之外,我只是重命名了文件夹 /usr/local/include/opencv2 以便在编译我的 cpp 文件时不选择它。

于 2016-03-12T21:27:24.297 回答