Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problem de compilation Opencv c++

Bibliotheques non trouvée

21 juin 2017 à 12:01:10


Bonjour !

je suis un nouveau utilisateur de linux !

j'essaye d'executer un programme en c++ qui utilise les bibliothèques d'Opencv mais quand je compile en utilisant la commande suivante : 

g++ Display.cpp -o Display `pkg-config opencv --cflags --libs` 

je  recoi le message d'erreur suivant :

fatal error : opencv\highgui.h: Aucun fichier ou dossier de ce type





  • Partager sur Facebook
  • Partager sur Twitter
21 juin 2017 à 13:25:37

Bonjour,

Je développe avec opencv et avec une distribution Fedora. J'utilise cmake ... plus simple et plus portable.

Je ne sais comment tu as fait ton include dans ton cpp mais chez moi c'est juste :

#include "highgui.h"

Ensuite pour les autres include c'est plutôt :

#include "opencv2/highgui/highgui.hpp"

A+

  • Partager sur Facebook
  • Partager sur Twitter
21 juin 2017 à 13:44:30

Merci pour ta reponse mais j'ai essayer avec le " " et ca ne marche pas .

  • Partager sur Facebook
  • Partager sur Twitter
21 juin 2017 à 13:50:52

Fais un find sur ton disque pour voir où est cet include.

A+

  • Partager sur Facebook
  • Partager sur Twitter
21 juin 2017 à 13:52:46

Je suis debutant sur linux si c'est possible de me montrer les lignes de commande ?
  • Partager sur Facebook
  • Partager sur Twitter
21 juin 2017 à 13:55:31

Tu es sous quelle distribution ? moi sous Fedora.

# find / -name highgui.h

et chez moi cela se trouve sous : /usr/include/opencv/highgui.h

A+

  • Partager sur Facebook
  • Partager sur Twitter
21 juin 2017 à 13:59:24

je suis sous Ubuntu 16.04 LTS

la commande find ma retourner ceci :

/home/ismail/Téléchargements/Opencv/opencv-3.2.0/include/opencv/highgui.h
/home/ismail/Opencv-3.1.0/OpenCV/opencv-3.2.0/include/opencv/highgui.h
/home/ismail/Opencv-3.1.0/opencv/include/opencv/highgui.h
/home/ismail/opencv-2.4.9.1+dfsg/include/opencv/highgui.h
find: «/run/user/1000/gvfs»: Permission non accordée
/usr/local/include/opencv/highgui.h
/usr/include/opencv/highgui.h



  • Partager sur Facebook
  • Partager sur Twitter
21 juin 2017 à 14:06:11

ok donc c'est bien comme moi pour ta la dernière ligne (la 7).

Utilise cmake c'est tellement plus simple que de mettre une ligne de commande.

Avec cmake tu fais dans ton répertoire où il y a les sources un fichier qui s'appelle CMakeLists.txt et qui va contenir seulement (je fais au plus simple)  :

cmake_minimum_required(VERSION 2.8)
project( nom_projet )
find_package( OpenCV REQUIRED )
INCLUDE_DIRECTORIES( ${OpenCV_INCLUDE_DIRS} )
add_executable( nom_projet source.cpp )
target_link_libraries( nom_projet ${OpenCV_LIBS} )

Il te suffit d'adapter ci-dessus nom_projet et cource.cpp et ensuite la commande :

cmake . & make

Et tu as ton exécutable.

A+


-
Edité par monkey3d 21 juin 2017 à 14:07:13

  • Partager sur Facebook
  • Partager sur Twitter
21 juin 2017 à 14:19:32

J'ai deja un fichier CMakeLists.txt qui contient :
# ----------------------------------------------------------------------------
#  CMake file for C samples. See root CMakeLists.txt
#
# ----------------------------------------------------------------------------

SET(OPENCV_CPP_SAMPLES_REQUIRED_DEPS opencv_core opencv_imgproc opencv_flann
    opencv_imgcodecs opencv_videoio opencv_highgui opencv_ml opencv_video
    opencv_objdetect opencv_photo opencv_features2d opencv_calib3d
    opencv_stitching opencv_videostab opencv_shape ${OPENCV_MODULES_PUBLIC} ${OpenCV_LIB_COMPONENTS})

ocv_check_dependencies(${OPENCV_CPP_SAMPLES_REQUIRED_DEPS})


if(BUILD_EXAMPLES AND OCV_DEPENDENCIES_FOUND)
  project(cpp_samples)

  ocv_include_directories("${OpenCV_SOURCE_DIR}/include")#for opencv.hpp
  ocv_include_modules_recurse(${OPENCV_CPP_SAMPLES_REQUIRED_DEPS})

  if(HAVE_opencv_cudaoptflow)
    ocv_include_directories("${OpenCV_SOURCE_DIR}/modules/cudaoptflow/include")
  endif()
  if(HAVE_opencv_cudaimgproc)
    ocv_include_directories("${OpenCV_SOURCE_DIR}/modules/cudaimgproc/include")
  endif()
  if(HAVE_opencv_cudaarithm)
    ocv_include_directories("${OpenCV_SOURCE_DIR}/modules/cudaarithm/include")
  endif()
  if(HAVE_opencv_cudafilters)
    ocv_include_directories("${OpenCV_SOURCE_DIR}/modules/cudafilters/include")
  endif()

  if(CMAKE_COMPILER_IS_GNUCXX AND NOT ENABLE_NOISY_WARNINGS)
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-function -Wno-missing-declarations")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-function -Wno-missing-declarations")
  endif()

  # ---------------------------------------------
  #      Define executable targets
  # ---------------------------------------------
  MACRO(OPENCV_DEFINE_CPP_EXAMPLE name srcs)

    if("${srcs}" MATCHES "tutorial_code")
      set(sample_kind tutorial)
      set(sample_KIND TUTORIAL)
      set(sample_subfolder "tutorials")
    else()
      set(sample_kind example)
      set(sample_KIND EXAMPLE)
      set(sample_subfolder "cpp")
    endif()

    set(the_target "${sample_kind}_${name}")
    add_executable(${the_target} ${srcs})
    ocv_target_link_libraries(${the_target} ${OPENCV_LINKER_LIBS} ${OPENCV_CPP_SAMPLES_REQUIRED_DEPS})

    if("${srcs}" MATCHES "gpu/")
      ocv_target_link_libraries(${the_target} opencv_cudaarithm opencv_cudafilters)
    endif()

    if("${srcs}" MATCHES "viz/" AND VTK_USE_FILE)
      include(${VTK_USE_FILE})
      ocv_target_link_libraries(${the_target} ${VTK_LIBRARIES})
      add_definitions(-DUSE_VTK)
    endif()

    set_target_properties(${the_target} PROPERTIES
      OUTPUT_NAME "cpp-${sample_kind}-${name}"
      PROJECT_LABEL "(${sample_KIND}) ${name}")

    if(ENABLE_SOLUTION_FOLDERS)
      set_target_properties(${the_target} PROPERTIES FOLDER "samples/${sample_subfolder}")
    endif()

    if(WIN32)
      if (MSVC AND NOT BUILD_SHARED_LIBS)
        set_target_properties(${the_target} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:atlthunk.lib /NODEFAULTLIB:atlsd.lib /DEBUG")
      endif()
      install(TARGETS ${the_target}
              RUNTIME DESTINATION "${OPENCV_SAMPLES_BIN_INSTALL_PATH}/${sample_subfolder}" COMPONENT samples)
    endif()
  ENDMACRO()

  file(GLOB_RECURSE cpp_samples RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.cpp)

  if(NOT HAVE_OPENGL)
    ocv_list_filterout(cpp_samples Qt_sample)
  endif()

  if(NOT HAVE_opencv_cudaarithm OR NOT HAVE_opencv_cudafilters)
    ocv_list_filterout(cpp_samples "/gpu/")
  endif()

  if(NOT TARGET opencv_viz)
    ocv_list_filterout(cpp_samples "/viz/")
  endif()

  if(NOT HAVE_IPP_A)
    ocv_list_filterout(cpp_samples "/ippasync/")
  endif()

  foreach(sample_filename ${cpp_samples})
    if(NOT "${sample_filename}" MATCHES "real_time_pose_estimation/")
        get_filename_component(sample ${sample_filename} NAME_WE)
        OPENCV_DEFINE_CPP_EXAMPLE(${sample}  ${sample_filename})
    endif()
  endforeach()

  include("tutorial_code/calib3d/real_time_pose_estimation/CMakeLists.txt")
endif()

if(INSTALL_C_EXAMPLES AND NOT WIN32)
  file(GLOB C_SAMPLES *.c *.cpp *.jpg *.png *.data makefile.* build_all.sh *.dsp *.cmd )
  install(FILES ${C_SAMPLES}
          DESTINATION ${OPENCV_SAMPLES_SRC_INSTALL_PATH}/cpp
          PERMISSIONS OWNER_READ GROUP_READ WORLD_READ COMPONENT samples)
endif()


  • Partager sur Facebook
  • Partager sur Twitter
21 juin 2017 à 14:32:04

Je ne sais t'en dire plus ... moi cela fonctionne (reconnaisance faciale, etc) avec le tout petit fichier que je t'ai indiqué.

Peut-être voir quand même si la variable :

${OpenCV_SOURCE_DIR}

est bien positionnée.

A+

-
Edité par monkey3d 21 juin 2017 à 14:32:37

  • Partager sur Facebook
  • Partager sur Twitter
22 juin 2017 à 9:22:11

elle est bien positionnée , je sais pas quoi faire :/ est-il possible que ca soit une erreur du systeme ?
  • Partager sur Facebook
  • Partager sur Twitter
22 juin 2017 à 10:39:46

Non, je ne pense pas que ce soit une erreur du système.

Elle est bien positionnée : mais encore ? c'est quoi sa valeur ?

Tu peux montrer la partie de ton cpp avec les include ?

A+

  • Partager sur Facebook
  • Partager sur Twitter
22 juin 2017 à 10:54:07

Désolé , j'ai pas compris :/ je viens de commencer sur Ubuntu :/
  • Partager sur Facebook
  • Partager sur Twitter
22 juin 2017 à 11:03:50

Tu me dis que ta variable de compilation (cf ci-dessus) est bien positionnée : mais elle a quelle valeur alors ? Cela n'a rien à voir avec Ubuntu ... c'est de la compilation de C++ où il faut assigner différentes valeurs à des variables pour que la compilation se fasse bien.

Si on en croit le message d'erreur du début, il ne trouve pas les points h. Or nous avons vérifié qu'ils étaient au bon endroit. Donc à mon sens soit ta variable de compilation n'indique pas le bon chemin soit ta déclaration des include n'est pas bonne dans ton cpp.

D'où mes 2 demandes !

Entre parenthèses je t'ai donné un exemple simple de cmake ci-dessus, tu aurais pu essayer pour voir ce que cela donnait.

A+

  • Partager sur Facebook
  • Partager sur Twitter
22 juin 2017 à 15:47:23

On pourrait voir la ligne qui fait l'include ? Parce qu'utiliser \\ ne fonctionnera pas sur linux.

Pour les includes système on utilise de préférence les chevrons (<>)

  • Partager sur Facebook
  • Partager sur Twitter
26 mai 2019 à 16:56:48

Bonjour,

Voila j'ai un souci lorsque je fais le make avec la commande "make -j4"

Ci-dessous les erreurs que j'obtiens;Si vous pouvez m'expliquer les raisons

Merci

configuration opencv

  • Partager sur Facebook
  • Partager sur Twitter
Staff 27 mai 2019 à 12:43:53

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter