Merci d'avance pour votre aide...
Informations système: Ubuntu 11.10 (64 bits) avec OpenCV 2.3 (installé aujourd'hui)
J'essaie de compiler du code très simple dans OpenCV 2.3 mais j'obtiens une erreur étrange.
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
int main(){
cv::Mat image=cv::imread("img.jpg");
cv::namedWindow("My Image");
cv::imshow("My Image",image);
cv::waitKey(0);
return 1;
}
howeverrrrrrrrrrrrr, je reçois ces messages d'erreur ...
-SG41:~/Desktop$ g++ `pkg-config opencv --cflags --libs` -o test_1 test_1.cpp
/tmp/ccCvS1ys.o: In function `main':
test_1.cpp:(.text+0x44): undefined reference to `cv::imread(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
test_1.cpp:(.text+0x8e): undefined reference to `cv::namedWindow(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
test_1.cpp:(.text+0xbc): undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)'
test_1.cpp:(.text+0xf0): undefined reference to `cv::imshow(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&)'
test_1.cpp:(.text+0x112): undefined reference to `cv::waitKey(int)'
/tmp/ccCvS1ys.o: In function `cv::Mat::~Mat()':
test_1.cpp:(.text._ZN2cv3MatD2Ev[_ZN2cv3MatD5Ev]+0x39): undefined reference to `cv::fastFree(void*)'
/tmp/ccCvS1ys.o: In function `cv::Mat::release()':
test_1.cpp:(.text._ZN2cv3Mat7releaseEv[cv::Mat::release()]+0x47): undefined reference to `cv::Mat::deallocate()'
collect2: ld returned 1 exit status
Je devine qu'au moins certaines des bibliothèques dans la sortie de
pkg-config opencv --libs
sont des bibliothèques d'archives. Il est incorrect de placer les bibliothèques d'archives avant les sources qui en ont besoin (test_1.cpp
dans ce cas): l'ordre des sources et des bibliothèques sur la ligne de liaison Matters .
Essayer
g++ -o test_1 test_1.cpp `pkg-config opencv --cflags --libs`
J'avais le même problème, mais j'ai découvert pkg-config opencv --cflags affiche "-I/usr/include/opencv" au lieu de "-I/usr/include/opencv2" ... Peut-être un bogue sur Ubuntu?
J'utilise cmake et j'ai eu des problèmes similaires.
Quelque chose de bizarre se passe avec les fichiers de configuration de cmake.
Pour moi, les problèmes ont été résolus en définissant simplement OPENCV_FOUND sur TRUE et OpenCV_FOUND sur TRUE.
De plus, je devais définir OpenCV_DIR sur/usr/local/share/OpenCV.
La réponse de @EmployedRussian a également fonctionné pour moi. Pour ceux qui se demandent comment spécifier cette commande dans Eclipse, utilisez ce post -
https://www.Eclipse.org/forums/index.php?t=msg&goto=233377&
Au lieu d’ajouter gtk +, utilisez opencv; Au lieu d’ajouter les nouveaux indicateurs à la catégorie "Drapeaux de l’éditeur de liens divers", ajoutez-les à la fin après $ {INPUT} in - > Construction C/C++ -> Paramètres-> Éditeur de liens GCC C++-> Paramètres experts: modèle de ligne de commande