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

Author: karlphillip, 2012-02-01

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++.

 44
Author: karlphillip,
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
 4
Author: Jonathan Ben-Avraham,
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