j'ai un fichier avec seulement importation:
#include <iostream>
#include <stdio.h>
#include "cxcore.hpp"
#include "highgui.hpp"
using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
}
et j'essaye de compiler avec g ++ -I/usr/include/opencv -lopencv -lm m.cpp
mais obtenez une petite erreur:
Dans le fichier inclus depuis /usr/include/opencv/cxcore.hpp:46, depuis m.cpp: 5: /usr/include/opencv/cxmisc.h:214: erreur: constructeur, destructeur ou conversion de type attendu avant 'void' '/usr/include/opencv/cxmisc.h:220: erreur: constructeur attendu, destructeur ou conversion de type avant' int '/usr/include/opencv/cxmisc.h:226: erreur:' CV_INLINE 'ne nomme pas un type /usr/include/opencv/cxmisc.h:516: erreur: 'CV_DEPTH_MAX' n'a pas été déclaré dans cette étendue /usr/include/opencv/cxmisc.h:522: erreur: 'CV_DEPTH_MAX' n'a pas été déclaré dans cette étendue/usr/include/opencv/cxmisc.h: 522: erreur: 'CV_CN_MAX' n'a pas été déclaré dans cette étendue Dans le fichier inclus depuis m.cpp: 5: /usr/include/opencv/cxcore.hpp:70: erreur: déclaration de modèle de 'cv :: CV_EXPORTS cv :: Size_' /usr/include/opencv/cxcore.hpp:71: erreur: déclaration de modèle de 'cv :: CV_EXPORTS cv :: Point_' /usr/include/opencv/cxcore.hpp: 72: erreur: déclaration de modèle de 'cv :: CV_EXPORTS cv :: Rect_' /usr/include/opencv/cxcore.hpp:77: erreur: initialiseur attendu avant 'fromUtf16' /usr/include/opencv/cxcore.hpp:78: erreur: initialiseur attendu avant 'toUtf16' /usr/include/opencv/cxcore.hpp:80: erreur: initialiseur attendu avant 'format' /usr/include/opencv/cxcore.hpp:82: erreur: initialiseur attendu avant ':' token m.cpp: 38: erreur: '}' attendu à la fin de l'entrée
c'est mon contenu lib copencv:
alberto@zefiro:~$ ls /usr/include/opencv/
cvaux.h cvcompat.h cv.hpp cvtypes.h cvvidsurv.hpp cxcore.h cxerror.h cxmat.hpp cxoperations.hpp highgui.h ml.h
cvaux.hpp cv.h cvinternal.h cvver.h cvwimage.h cxcore.hpp cxflann.h cxmisc.h cxtypes.h highgui.hpp
je suis sur ubuntu 10.10
Vous devez inclure correctement les en-têtes -I
(majuscule i) et bibliothèques -l
(L minuscule).
Sur les dernières versions d'OpenCV, vous devriez faire:
#include <cv.h>
#include <highgui.h>
Et puis essayez de le compiler avec:
g++ m.cpp -o app `pkg-config --cflags --libs opencv`
Remarque: si vous exécutez uniquement pkg-config --cflags --libs opencv
dans la ligne de commande, vous verrez les chemins et les bibliothèques que vous devez inclure dans la ligne de commande g ++.
si votre environnement de développement n'a pas pkg-config
et pour cette raison, la réponse acceptée par karlphilip n'est pas pratique, ou, vous devez connaître l'ensemble minimal de bibliothèques nécessaires pour lier votre application, puis en supposant du code tel que
#include <cv.h>
#include <highgui.h>
int main()
{
return 0;
}
vous pouvez ajouter des arguments de bibliothèque à partir de la liste suivante séquentiellement à partir du haut jusqu'à ce que vous trouviez l'ensemble minimal d'arguments dont vous avez besoin:
-lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3 .____.] -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann
Par exemple, le code source C répertorié en haut de cet article se compile et se lie proprement avec uniquement
gcc hello.c -o hello \
-I /usr/include/opencv \
-L /usr/lib \
-lopencv_core \
-lopencv_imgproc
sur mon ancienne boîte x86_64 Ubuntu 12.04.
En supposant que le code C++ tel que
#include "core/core.hpp"
#include "highgui/highgui.hpp"
using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
return 0;
}
alors vous compileriez et établiriez un lien avec
g++ hello.cpp -o hello \
-I /usr/include/opencv2 \
-L /usr/lib \
-lopencv_core \
-lopencv_imgproc
Je vous suggère d'utiliser CMake pour compiler OpenCV
avec G++
, cette façon est plus appropriée, je pense.
cmake_minimum_required(VERSION 3.1)
project(YOUR_PROJECT_NAME)
set(CMAKE_GXX_FLAGS "-Wall -Wextra -Wconversion -pedantic -std=gnu11")
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(YOUR_EXCUTABLE YOUR_CODE_SOURCE_FILES)
target_link_libraries(YOUR_EXCUTABLE ${OpenCV_LIBS})
En exécutant le fichier de script, vous installez automatiquement les fichiers nécessaires pour opencv. Exécutez le code suivant:
chmod +x install-opencv.sh
./install-opencv.sh
Si vous installez une version différente de la bibliothèque, veuillez mettre à jour la première ligne de version dans le script d'installation. Pour plus d'informations, utilisez this tutorial. Compilez-le avec la ligne suivante:
g++ `pkg-config --cflags opencv` example.cpp `pkg-config --libs opencv`