pkg example compile compilar c++ opencv image-processing compilation

example - compilando opencv en c++



opencv compile linux (4)

  1. Descargue los archivos fuente en la carpeta OpenCV y en el script OpenCV .
  2. Al ejecutar el archivo de script, instala automáticamente los archivos necesarios para opencv. Ejecuta el siguiente código:

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

En caso de que si instala una versión diferente de la biblioteca, actualice la primera línea de la versión dentro del script de instalación. Para más información utiliza this tutorial. Compílalo con la siguiente línea:

g++ `pkg-config --cflags opencv` example.cpp `pkg-config --libs opencv`

Tengo un archivo con solo importar:

#include <iostream> #include <stdio.h> #include "cxcore.hpp" #include "highgui.hpp" using namespace cv; using namespace std; int main( int argc, char** argv ) { }

y trato de compilar con g ++ -I / usr / include / opencv -lopencv -lm m.cpp

pero consigue un error:

En el archivo incluido desde /usr/include/opencv/cxcore.hpp:46, desde m.cpp: 5: /usr/include/opencv/cxmisc.h:214: error: constructor, destructor o conversión de tipo esperado antes de ''void ''/usr/include/opencv/cxmisc.h:220: error: constructor, destructor o tipo de conversión esperado antes de'' int ''/usr/include/opencv/cxmisc.h:226: error:'' CV_INLINE ''no nombra a escriba /usr/include/opencv/cxmisc.h:516: error: ''CV_DEPTH_MAX'' no fue declarado en este alcance /usr/include/opencv/cxmisc.h:522: error: ''CV_DEPTH_MAX'' no fue declarado en este alcance / usr / include / opencv / cxmisc.h: 522: error: ''CV_CN_MAX'' no se declaró en este alcance En el archivo incluido de m.cpp: 5: /usr/include/opencv/cxcore.hpp:70: error: declaración de la plantilla de ''cv :: CV_EXPORTS cv :: Size_'' /usr/include/opencv/cxcore.hpp:71: error: declaración de plantilla de ''cv :: CV_EXPORTS cv :: Point_'' /usr/include/opencv/cxcore.hpp: 72: error: declaración de plantilla de ''cv :: CV_EXPORTS cv :: Rect_'' /usr/include/opencv/cxcore.hpp:77: error: inicializador esperado antes '' fromUtf16 ''/usr/include/opencv/cxcore.hpp:78: error: inicializador esperado antes de'' toUtf16 ''/usr/include/opencv/cxcore.hpp:80: error: inicializador esperado antes de'' format ''/ usr / include / opencv /cxcore.hpp:82: error: inicializador esperado antes de '':'' token m.cpp: 38: error: esperado ''}'' al final de la entrada

Este es mi contenido 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

Estoy en Ubuntu 10.10


Debe incluir correctamente los encabezados -I (mayúscula i) y las bibliotecas -l (L minúscula).

En las nuevas versiones de OpenCV debes hacer:

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

Y luego intenta compilarlo con:

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

Nota: si ejecuta solo pkg-config --cflags --libs opencv en la línea de comandos, verá las rutas y bibliotecas que necesita incluir en la línea de comandos de g ++.


Le sugiero que use CMake para compilar OpenCV con G++ , esta forma es más adecuada, creo.

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})


Si su entorno de desarrollo no tiene pkg-config y debido a esto, la respuesta aceptada por karlphilip no es práctica, o, necesita conocer el conjunto mínimo de bibliotecas necesarias para vincular su aplicación, asumiendo un código como

#include <cv.h> #include <highgui.h> int main() { return 0; }

puede agregar argumentos de la biblioteca de la siguiente lista de forma secuencial desde la parte superior hasta que encuentre el conjunto mínimo de argumentos que necesita:

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

Por ejemplo, el código fuente de C que aparece en la parte superior de esta publicación se compila y enlaza de forma limpia solo con

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

en mi viejo x86_64 Ubuntu 12.04 cuadro.

Asumiendo código C ++ como

#include "core/core.hpp" #include "highgui/highgui.hpp" using namespace cv; using namespace std; int main( int argc, char** argv ) { return 0; }

entonces usted compilaría y enlazaría con

g++ hello.cpp -o hello / -I /usr/include/opencv2 / -L /usr/lib / -lopencv_core / -lopencv_imgproc