找不到模块FindOpenCV.cmake(配置过程中出错)

时间:2012-01-03 10:49:30

标签: opencv cmake

我为 C ++ 中的项目编写了CMakeLists.txt,该项目使用 OpenCV 库。当我尝试使用cmake创建项目时,我遇到了下一个配置问题:

CMake Error at CMakeLists.txt:15 (find_package):
  Could not find module FindOpenCV.cmake or a configuration file for package
  OpenCV.

  Adjust CMAKE_MODULE_PATH to find FindOpenCV.cmake or set OpenCV_DIR to the
  directory containing a CMake configuration file for OpenCV.  The file will
  have one of the following names:

    OpenCVConfig.cmake
    opencv-config.cmake

事实是我有一个环境变量用于我在Visual Studio中使用的路径没有问题。如果我不包含OpenCV,那么我可以毫无问题地配置和生成,但我需要解决问题。我不明白为什么cmake无法找到OpenCV路径或如何修复它。

我还使用了此链接中提到的建议: FindOpenCV.cmake

有人也有这个问题吗?

13 个答案:

答案 0 :(得分:31)

您看到的错误是CMake无法找到FindOpenCV.cmake文件,因为cmake不包含一个开箱即用的文件。因此,您需要找到一个并将其放在cmake可以找到它的位置:

您可以找到good start here。如果你喜欢冒险,你也可以自己写。

然后在项目中的某处添加它并调整CMAKE_MODULE_PATH以便cmake可以找到它。

例如,如果你有

CMakeLists.txt
cmake-modules/FindOpenCV.cmake

然后你应该做一个

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake-modules)

在执行find_package(OpenCV)之前的CMakeLists.txt文件中

答案 1 :(得分:20)

如果您使用的是Linux,则只需要使用opencv(包含OpenCVConfig.cmake文件)的路径填充OpenCV_DIR变量

export OpenCV_DIR=<path_of_opencv>

答案 2 :(得分:12)

我有同样的问题。我通过在FindOpenCV.cmake文件中添加以下行来修复它。在其余代码之前将它放在顶部的任何位置。

set (OpenCV_DIR /home/cmake/opencv/compiled) #change the path to match your complied directory of opencv

基本上你告诉FindOpenCV.cmake在哪里找到opencv文件,假设其他编译可以找到FindOpenCV.cmake

答案 3 :(得分:9)

find / -name“OpenCVConfig.cmake”

导出OpenCV_DIR = / path / found / above

答案 4 :(得分:8)

  1. apt-get install libopencv-dev
  2. 导出OpenCV_DIR = / usr / share / OpenCV
  3. cpp文件的标题应包含: #包括 #include“opencv2 / highgui / highgui.hpp”
  4. 的#include #include

    不是原创cv.h

答案 5 :(得分:5)

我遇到了同样的错误。就我而言,这是&#34; OpenCVConfig.cmake&#34;文件位于/ usr / local / share / OpenCV中。在CMakeLists.txt中添加行

set(OpenCV_DIR /usr/local/share/OpenCV)

正如错误消息所示。

答案 6 :(得分:3)

如果你在Windows上,你可以自己添加opencv路径到OpenCV_DIR。 (OpenCV_DIR位于红色区域)

路径就像“D:/ opencv244 / build”。

你可以在路径下找到“OpenCVConfig.cmake”文件。

答案 7 :(得分:1)

在我的Fedora机器上,当我输入“make”时,我收到一条错误消息,说它无法找到“cv.h”。我通过修改我的“OpenCVConfig.cmake”文件修复了这个问题。

在:

SET(OpenCV_INCLUDE_DIRS“$ {OpenCV_INSTALL_PATH} / include / opencv; $ {OpenCV_INSTALL_PATH} / include”)

SET(OpenCV_LIB_DIR“$ {OpenCV_INSTALL_PATH} / lib64”)

后:

SET(OpenCV_INCLUDE_DIRS“/ usr / include / opencv; / usr / include / opencv2”)

SET(OpenCV_LIB_DIR“/ usr / lib64”)

答案 8 :(得分:1)

另一种可能性是表示您可以在CMakeLists.txt文件中找到OpenCV_DIR的位置。例如,以下cmake脚本适用于我:

cmake_minimum_required(VERSION 2.8)

project(performance_test)

set(OpenCV_STATIC ON)
set(OpenCV_CUDA OFF)
set(OpenCV_DIR "${CMAKE_SOURCE_DIR}/../install")

find_package(OpenCV REQUIRED)

include_directories(${OpenCV_INCLUDE_DIRS})

link_directories(${OpenCV_LIB_DIR})

file(GLOB my_source_files ./src/*)

add_executable( performance_test ${my_source_files})

target_link_libraries(performance_test ${OpenCV_LIBS})

提醒您在调用OpenCV_STATIC之前也应设置OpenCV_CUDAOpenCVConfig.cmake。在我的例子中,构建的库是不使用CUDA的静态库。

答案 9 :(得分:1)

我正在使用Windows并获得相同的错误消息。我发现另一个相关的问题。     我在行尾的路径中定义了OpenCV_DIR。但是,当我在命令行中键入“path”时,我的OpenCV_DIR未显示。我发现因为Windows可能对路径的长度有限制,它将我的OpenCV_DIR切割为我定义的部分。所以我删除了路径的其他部分,现在它可以工作了。

答案 10 :(得分:1)

我有同样的错误,我使用的是Windows。我将“C:\ opencv \ build”(opencv文件夹)添加到控制面板的路径。 所以,那没关系!!

答案 11 :(得分:0)

跟随@ 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有用。请务必在CMakeLists.txt中添加target_link_libraries(yourprojectname ${OpenCV_LIBS})

答案 12 :(得分:-1)

当您在 c 驱动器(Windows)中安装库时。 CMakeLists.txt 应该如下所示:

cmake_minimum_required(VERSION 3.0.0)
project(test_opencv VERSION 0.1.0)

include(CTest)
enable_testing()

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

add_executable(test_opencv main.cpp)

target_link_libraries(test_opencv ${OPENCV_LIBS})

set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)

找到包并包含目录

在 VS 代码中构建项目时。由于 OpenCV 安装在 C 驱动器中,因此使用管理员权限运行 Visual Studio 代码。