kompilowanie opencv w c++
Mam plik tylko z importem:
#include <iostream>
#include <stdio.h>
#include "cxcore.hpp"
#include "highgui.hpp"
using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
}
I próbuję skompilować z g++ - I / usr / include / opencv-lopencv -lm m.cpp
Ale uzyskaj błąd whit:
W pliku dołączonym z /usr/include/opencv / cxcore.hpp: 46, od m. cpp: 5: / usr / include/opencv / cxmisc.h: 214: error: expected constructor, destructor, or type conversion before 'void' / usr / include/opencv / cxmisc.h: 220: error: expected constructor, destructor, or type conversion before 'int' / usr / include/opencv / cxmisc.h: 226: error: 'CV_INLINE' does not name a type / usr / include/opencv / cxmisc.h: 516: error: 'CV_DEPTH_MAX' was not declared in this scope / usr / include/opencv / cxmisc.h: 522: error: 'CV_DEPTH_MAX' was not declared in this scope / usr / include/opencv / cxmisc.h: 522: error: 'CV_CN_MAX' was not declared in this scope W pliku dołączonym z m. cpp:5: /usr / include/opencv / cxcore.hpp: 70: error: template declaration of 'cv:: CV_EXPORTS cv:: Size_' /usr / include/opencv / cxcore.hpp: 71: error: template declaration of 'cv:: CV_EXPORTS cv:: Point_' /usr / include/opencv / cxcore.hpp: 72: error: Szablon deklaracji 'cv:: CV_EXPORTS cv:: Rect_' /usr / include/opencv / cxcore.hpp: 77: error: expected initializer before 'fromUtf16' /usr / include/opencv / cxcore.hpp: 78: error: expected initializer before 'toUtf16' /usr / include/opencv / cxcore.hpp: 80: error: expected initializer before 'format' /usr / include/opencv / cxcore.hpp: 82: błąd: oczekiwany initializer before': 'token m. cpp: 38: error: expected'} ' at end of input
To jest moja zawartość 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
Jestem na ubuntu 10.10
2 answers
Musisz poprawnie dołączyć nagłówki -I
(duże i) i biblioteki -l
(małe litery L).
Na najnowszych wersjach OpenCV powinieneś zrobić:
#include <cv.h>
#include <highgui.h>
A następnie spróbuj skompilować go za pomocą:
g++ m.cpp -o app `pkg-config --cflags --libs opencv`
Uwaga: jeśli wykonasz tylko pkg-config --cflags --libs opencv
w wierszu poleceń zobaczysz ścieżki i biblioteki, które musisz dołączyć do wiersza poleceń g++.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-01 14:04:13
Jeśli Twoje środowisko programistyczne nie ma pkg-config
i z tego powodu zaakceptowana odpowiedź przez karlphilipa nie jest praktyczna, lub musisz znać minimalny zestaw bibliotek wymaganych do połączenia Twojej aplikacji, zakładając kod taki jak
#include <cv.h>
#include <highgui.h>
int main()
{
return 0;
}
Możesz dodawać argumenty biblioteki z poniższej listy kolejno od góry, aż znajdziesz minimalny zestaw argumentów, których potrzebujesz:
-lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann
Na przykład kod źródłowy C wymieniony na górze tego posta kompiluje i linki czysto z tylko
gcc hello.c -o hello \
-I /usr/include/opencv \
-L /usr/lib \
-lopencv_core \
-lopencv_imgproc
Na moim starym x86_64 Ubuntu 12.04 box.
Zakładając kod C++ taki jak
#include "core/core.hpp"
#include "highgui/highgui.hpp"
using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
return 0;
}
Następnie kompilujesz i linkujesz z
g++ hello.cpp -o hello \
-I /usr/include/opencv2 \
-L /usr/lib \
-lopencv_core \
-lopencv_imgproc
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:44