我为 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
有人也有这个问题吗?
答案 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)
的#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_CUDA
和OpenCVConfig.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 代码。