компилирование opencv в c ++ - PullRequest
       15

компилирование opencv в c ++

19 голосов
/ 01 февраля 2012

У меня есть файл только с импортом:

#include <iostream>
#include <stdio.h>

#include "cxcore.hpp"
#include "highgui.hpp"

using namespace cv;
using namespace std;

int main( int argc, char** argv )
{

}

и я пытаюсь скомпилировать с помощью g ++ -I / usr / include / opencv -lopencv -lm m.cpp

но получите ошибку:

В файле, включенном в /usr/include/opencv/cxcore.hpp:46, из m.cpp: 5: /usr/include/opencv/cxmisc.h:214: ошибка: ожидаемый конструктор, деструктор или преобразование типов перед "void" /usr/include/opencv/cxmisc.h:220: ошибка: ожидаемый конструктор, деструктор или преобразование типов перед «int» /usr/include/opencv/cxmisc.h:226: ошибка: «CV_INLINE» не называет тип /usr/include/opencv/cxmisc.h:516: ошибка: «CV_DEPTH_MAX» не был объявлен в этой области /usr/include/opencv/cxmisc.h:522: ошибка: «CV_DEPTH_MAX» не был объявлен в этой области /usr/include/opencv/cxmisc.h:522: ошибка: «CV_CN_MAX» не был объявлен в этой области В файле из m.cpp: 5: /usr/include/opencv/cxcore.hpp:70: ошибка: объявление шаблона в cv :: CV_EXPORTS cv :: Size_ ’ /usr/include/opencv/cxcore.hpp:71: ошибка: объявление шаблона в cv :: CV_EXPORTS cv :: Point_ ’ /usr/include/opencv/cxcore.hpp:72: ошибка: объявление шаблона в 'cv :: CV_EXPORTS cv :: Rect_' /usr/include/opencv/cxcore.hpp:77: ошибка: ожидаемый инициализатор перед «fromUtf16» /usr/include/opencv/cxcore.hpp:78: ошибка: ожидаемый инициализатор перед «toUtf16» /usr/include/opencv/cxcore.hpp:80: ошибка: ожидаемый инициализатор перед форматированием /usr/include/opencv/cxcore.hpp:82: ошибка: ожидаемый инициализатор до токена ‘:’ m.cpp: 38: ошибка: ожидается ‘}’ в конце ввода

это мой copencv lib контент:

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

Я нахожусь на Ubuntu 10.10

Ответы [ 4 ]

49 голосов
/ 01 февраля 2012

Необходимо правильно включить заголовки -I (заглавная i) и библиотеки -l (строчная L).

На последних версиях OpenCV вы должны сделать:

#include <cv.h>
#include <highgui.h>

А затем попробуйте скомпилировать его:

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

Примечание: если вы выполните только pkg-config --cflags --libs opencv в командной строке, вы увидите пути и библиотеки, которые необходимо включить в командную строку g ++.

5 голосов
/ 16 августа 2016

если ваша среда разработки не имеет pkg-config и из-за этого принятый ответ karlphilip нецелесообразен или вам необходимо знать минимальный набор библиотек, необходимый для связи вашего приложения, тогда предполагая код, такой как

#include <cv.h>
#include <highgui.h>

int main()
{
    return 0;
}

вы можете добавлять библиотечные аргументы из следующего списка последовательно сверху вниз, пока не найдете минимальный набор необходимых вам аргументов:

  -lopencv_core
  -lopencv_imgproc
  -lopencv_highgui
  -lopencv_ml
  -lopencv_video
  -lopencv_features2d
  -lopencv_calib3d
  -lopencv_objdetect
  -lopencv_contrib
  -lopencv_legacy
  -lopencv_flann

Например, исходный код C, указанный в верхней части этого поста, компилируется и связывается только с

gcc hello.c -o hello \
    -I /usr/include/opencv \
    -L /usr/lib \
    -lopencv_core \
    -lopencv_imgproc

на моем старом x86_64 Ubuntu 12.04 box.

Предполагая код C ++, такой как

#include "core/core.hpp"
#include "highgui/highgui.hpp"

using namespace cv;
using namespace std;

int main( int argc, char** argv )
{
    return 0;
}

тогда вы бы скомпилировали и связали с

g++ hello.cpp -o hello \
    -I /usr/include/opencv2 \
    -L /usr/lib \
    -lopencv_core \
    -lopencv_imgproc
1 голос
/ 06 марта 2019

Я предлагаю вам использовать CMake для компиляции OpenCV с G++, я думаю, этот способ более удобен.

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})
0 голосов
/ 02 марта 2019
  1. Загрузка исходных файлов в папку OpenCV и скрипт install-opencv.sh .
  2. Запустив файл скрипта, вы автоматически установите необходимые файлы для opencv.Запустите следующий код:

    chmod +x install-opencv.sh
    ./install-opencv.sh
    

В случае, если вы устанавливаете другую версию библиотеки, обновите первую строку версии внутри сценария установки.Для получения дополнительной информации используйте этот учебник.Скомпилируйте его с помощью следующей строки:

g++ `pkg-config --cflags opencv` example.cpp `pkg-config --libs opencv`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...