error 找不到模塊FindOpenCV.cmake(配置過程中出錯)




opencv cmake configuration (10)

您看到的錯誤是CMake無法找到FindOpenCV.cmake文件,因為cmake不包含一個開箱即用的文件。 因此,您需要找到一個並將其放在cmake可以找到它的位置:

你可以在這裡找到一個好的開始 。 如果你喜歡冒險,你也可以自己寫。

然後在項目中的某處添加它並調整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文件中

我在C ++中為一個使用OpenCV庫的項目編寫了一個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路徑或如何解決它。

我還使用了此鏈接中提到的建議: FindOpenCV.cmake

有人也有這個問題嗎?


Answer #1

我有同樣的問題。 我通過在FindOpenCV.cmake文件中添加以下行來修復它。 在其餘代碼之前將它放在頂部的任何位置。

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

基本上你是在告訴FindOpenCV.cmake在哪裡找到opencv文件,假設其他編譯可以找到FindOpenCV.cmake


Answer #2

find / -name“OpenCVConfig.cmake”

導出OpenCV_DIR = / path / found / above


Answer #3

我有同樣的錯誤,我使用Windows。 我將“C:\ opencv \ build”(opencv文件夾)添加到控制面板的路徑。 所以,那沒關係!!


Answer #4

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


Answer #5

跟著@ hugh-pearse和@ leszek-hanusz的回答,稍微調整一下。 我從ubuntu 12.10存儲庫(libopencv- )*安裝了opencv並遇到了同樣的問題。 無法解決它export OpenCV_DIR=/usr/share/OpenCV/ (因為我的OpenCVConfig.cmake whas那裡)。 當我在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})


Answer #6

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

export OpenCV_DIR=<path_of_opencv>

Answer #7

我正在使用Windows並獲得相同的錯誤消息。 我發現另一個相關的問題。 我在行尾的路徑中定義了OpenCV_DIR。 但是,當我在命令行中鍵入“path”時,我的OpenCV_DIR未顯示。 我發現因為Windows可能對路徑的長度有限制, 所以它將我的OpenCV_DIR切換為我定義的部分。 所以我刪除了路徑的其他部分,現在它可以工作了。


Answer #8

另一種可能性是表示在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_STATICOpenCVConfig.cmake 。 在我的例子中,構建的庫是不使用CUDA的靜態庫。


Answer #9
  1. apt-get install libopencv-dev
  2. 導出OpenCV_DIR = / usr / share / OpenCV
  3. cpp文件的標題應包含:#include #include“opencv2 / highgui / highgui.hpp”

#include #include

不是原始的cv.h