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

我为使用 OpenCV库的 C + + 项目编写了一个 CMakeLists.txt。当我尝试使用 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 路径或者如何修复它。

我还使用了这个链接中提到的建议: 找到 OpenCV.cmake

Does anybody had this problem too?

164128 次浏览

The error you're seeing is that CMake cannot find a FindOpenCV.cmake file, because cmake doesn't include one out of the box. Therefore you need to find one and put it where cmake can find it:

你可以找到一个 这是个好的开始。如果你感到冒险,你也可以写自己的。

然后将它添加到项目中的某个位置,并调整 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 文件中

我也有同样的问题。我通过在 FindOpenCV.cmake文件中添加以下代码行修复了这个问题。在剩下的代码之前把它放在顶部的任何地方。

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

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

如果您在 Linux 上,只需要用 OpenCV (包含 OpenCVConfig.cmake 文件)的路径填充 OpenCV _ DIR 变量

export OpenCV_DIR=<path_of_opencv>

在我的 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”)

接着是“休-皮尔斯”和“莱斯泽克-哈努斯”的回答,稍作调整。我已经安装了 来自 ubuntu 12.10存储库的 opencv (libopencv-) * ,并有同样的问题。无法用 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})

另一种可能性是表示在 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})

只是提醒您在调用 OpenCVConfig.cmake之前应该同时设置 OpenCV_STATICOpenCV_CUDA。在我的例子中,构建的库是不使用 CUDA 的静态库。

  1. Apt-get install libopencv-dev
  2. Export OpenCV _ DIR =/usr/share/OpenCV
  3. Cpp 文件的头部应该包含: # 包括 # 包括“ opencv2/highgui/highgui.hpp”

# 包括 # 包括

not original cv.h

如果在 windows 上,您可以自己将 OpenCV 路径添加到 OpenCV _ DIR。 (OpenCV _ DIR 位于红色区域)

路径类似于“ D:/opencv244/build”。

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

Find/-name“ OpenCVConfig.cmake”

Export OpenCV _ DIR =/path/found/above

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

在我的例子中,这个“ OpenCVConfig.cmake”文件位于/usr/local/share/OpenCV 中

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

正如错误消息所建议的那样。

我有相同的错误,我使用窗口。我添加“ C: opencv 构建”(opencv 文件夹)的路径在控制面板。 So, That's Ok!!

在 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 驱动器中时,使用管理员权限运行可视化工作室代码。

对我来说(在 Ubuntu 上) ,我只需要运行:

sudo apt-get install libopencv-dev