web-dev-qa-db-fra.com

Impossible de trouver le module FindOpenCV.cmake (erreur dans le processus de configuration)

J'ai écrit un CMakeLists.txt pour un projet en C++ , qui utilise des bibliothèques OpenCV . Quand j'essaie de créer le projet en utilisant cmake, j'obtiens le prochain problème de configuration:

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

Le fait est que j'ai une variable d'environnement pour le chemin que j'utilise dans Visual Studio sans aucun problème. Si je n'inclus pas OpenCV, je peux configurer et générer sans problème, mais je dois résoudre le problème. Je ne comprends pas pourquoi cmake ne peut pas trouver le chemin OpenCV ou comment le réparer.

J'ai également utilisé les recommandations mentionnées dans ce lien: FindOpenCV.cmake

Est-ce que quelqu'un a eu ce problème aussi?

51
Jav_Rock

L'erreur que vous voyez est que CMake ne peut pas trouver un fichier FindOpenCV.cmake, car cmake n'en contient pas un par défaut. Par conséquent, vous devez en trouver un et le placer où cmake peut le trouver:

Vous pouvez trouver un bon début ici . Si vous vous sentez aventureux, vous pouvez également écrire le vôtre.

Ajoutez-le ensuite quelque part dans votre projet et ajustez CMAKE_MODULE_PATH afin que cmake puisse le trouver.

par exemple, si vous avez

CMakeLists.txt
cmake-modules/FindOpenCV.cmake

Alors tu devrais faire un

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

Dans votre fichier CMakeLists.txt avant de faire un find_package (OpenCV)

31
alanxz

Si vous êtes sous Linux, il vous suffit de renseigner la variable OpenCV_DIR avec le chemin d’opencv (contenant le fichier OpenCVConfig.cmake).

export OpenCV_DIR=<path_of_opencv>
20
leszek.hanusz

J'ai eu exactement ce même problème. Je l'ai corrigé en ajoutant la ligne suivante à mon FindOpenCV.cmake fichier. Placez-le n'importe où en haut avant le reste du code.

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

En gros, vous dites FindOpenCV.cmake où trouver les fichiers ouverts en supposant que l’autre compilation puisse trouver le FindOpenCV.cmake

14
penner

find/-name "OpenCVConfig.cmake"

export OpenCV_DIR =/chemin/trouvé/ci-dessus

10
user6630590
  1. apt-get installez libopencv-dev
  2. exporter OpenCV_DIR =/usr/share/OpenCV
  3. l'en-tête du fichier cpp doit contenir: #include #include "opencv2/highgui/highgui.hpp"

#include #include

pas original cv.h

9
gaoxincun

J'ai fait face à la même erreur. Dans mon cas, ce fichier "OpenCVConfig.cmake" se trouve dans/usr/local/share/OpenCV. Dans CMakeLists.txt, ajoutez la ligne

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

comme suggéré par le message d'erreur.

5
YuZ

si vous êtes sur Windows, vous pouvez ajouter vous-même un chemin d'accès ouvert à OpenCV_DIR. (OpenCV_DIR est dans la région rouge)

le chemin est comme "D:/opencv244/build".

vous pouvez trouver le fichier "OpenCVConfig.cmake" sous le chemin.

3
user4728427

Sur ma machine Fedora, lorsque j'ai tapé "make", j'ai eu une erreur disant qu'il ne pouvait pas trouver "cv.h". J'ai résolu ce problème en modifiant mon fichier "OpenCVConfig.cmake".

Avant:

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

SET (OpenCV_LIB_DIR "$ {OpenCV_INSTALL_PATH}/lib64")

Après:

SET (OpenCV_INCLUDE_DIRS "/ usr/include/opencv;/usr/include/opencv2")

SET (OpenCV_LIB_DIR "/ usr/lib64")

1
Hugh Pearse

J'ai eu la même erreur, j'utilise Windows. J'ajoute "C:\opencv\build" (dossier opencv) au chemin d'accès au panneau de contrôle. Alors c'est bon !!

1
Albert Yun

Une autre possibilité consiste à indiquer où vous pouvez trouver OpenCV_DIR dans le fichier CMakeLists.txt. Par exemple, les scripts cmake suivants fonctionnent pour moi:

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})

Juste pour rappeler que vous devriez définir OpenCV_STATIC et OpenCV_CUDA ainsi avant de faire appel à OpenCVConfig.cmake. Dans mon cas, la bibliothèque construite est une bibliothèque statique qui n'utilise pas CUDA.

1
feelfree

J'utilise Windows et reçois le même message d'erreur. Je trouve un autre problème qui est pertinent. J'ai défini OpenCV_DIR dans mon chemin en fin de ligne. Cependant, lorsque j'ai tapé "chemin" dans la ligne de commande, mon OpenCV_DIR n'était pas affiché. J'ai trouvé parce que Windows a probablement une limite sur la longueur du chemin, il a coupé mon OpenCV_DIR pour qu'il ne soit qu'une partie de ce que j'ai défini. J'ai donc supprimé une autre partie du chemin, maintenant ça fonctionne.

1
Roy

Suivi des réponses de @ hugh-pearse et @ leszek-hanusz, avec un petit tweak. J'avais installé opencv depuis le référentiel Ubuntu 12.10 (libopencv - ) * et j'avais le même problème. Impossible de le résoudre avec export OpenCV_DIR=/usr/share/OpenCV/ (Car mon OpenCVConfig.cmake existe déjà). Le problème a été résolu lorsque j'ai également modifié certaines lignes du fichier 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})

Et cela a fonctionné sur mon Ubuntu 12.10. N'oubliez pas d'ajouter le target_link_libraries(yourprojectname ${OpenCV_LIBS}) dans votre CMakeLists.txt.

0
aguadopd