4
www.unielettronica.altervista.org Configurare Eclipse IDE per programmare con le librerie OpenCV in Windows La guida seguente è stata realizzata nel dicembre 2018, le versioni dei programmi utilizzati sono: - Windows 10 - Java JDK 8 Update 162 - Eclipse Oxygen.2 Release (4.7.2) con C/C++ IDE CDT 9.2 - MinGW-w64 - for 32 and 64 bit Windows - OpenCV 3.4.4 - CMake 3.13.1 1) Installare JAVA JDK (necessario per Eclipse) 2) Installare Eclipse IDE for C++ developers (o aggiungere il plugin C/C++ CDT dal Marketplace) 3) Rimuovere precedenti versioni di MinGW se diverse da quella di seguito, poi Installare MinGW scaricabile da qui: https://sourceforge.net/projects/mingw-w64/ Opzioni di installazione: (importante selezionare x86_64 e non i686) 4) Configurare le variabili di ambiente Windows per MinGW: Questo PC Proprietà Impostazioni di sistema avanzate Variabili d’ambiente Path Nuovo C:\Program Files\mingw- w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin (directory di installazione di minGW/bin)

Configurare Eclipse IDE per programmare con le librerie ... 5) Controllare se MinGW è installato correttamente: da prompt scrivere mingw32-make --version, devono comparire le info

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Configurare Eclipse IDE per programmare con le librerie ... 5) Controllare se MinGW è installato correttamente: da prompt scrivere mingw32-make --version, devono comparire le info

www.unielettronica.altervista.org

Configurare Eclipse IDE per programmare con le librerie OpenCV in Windows

La guida seguente è stata realizzata nel dicembre 2018, le versioni dei programmi utilizzati sono:

- Windows 10

- Java JDK 8 Update 162

- Eclipse Oxygen.2 Release (4.7.2) con C/C++ IDE CDT 9.2

- MinGW-w64 - for 32 and 64 bit Windows

- OpenCV 3.4.4

- CMake 3.13.1

1) Installare JAVA JDK (necessario per Eclipse)

2) Installare Eclipse IDE for C++ developers (o aggiungere il plugin C/C++ CDT dal Marketplace)

3) Rimuovere precedenti versioni di MinGW se diverse da quella di seguito, poi Installare MinGW scaricabile

da qui: https://sourceforge.net/projects/mingw-w64/

Opzioni di installazione: (importante selezionare x86_64 e non i686)

4) Configurare le variabili di ambiente Windows per MinGW: Questo PC Proprietà Impostazioni di sistema avanzate Variabili d’ambiente Path Nuovo C:\Program Files\mingw-

w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin (directory di installazione di minGW/bin)

Page 2: Configurare Eclipse IDE per programmare con le librerie ... 5) Controllare se MinGW è installato correttamente: da prompt scrivere mingw32-make --version, devono comparire le info

www.unielettronica.altervista.org

5) Controllare se MinGW è installato correttamente: da prompt scrivere mingw32-make --version , devono comparire le info come di seguito:

6) Scaricare ed estrarre OpenCV (v.3.4.4) for Windows, in una cartella dal percorso non troppo lungo e senza

spazi, ad es. C:\openCV

7) Installare CMake scaricabile da qui:

https://github.com/Kitware/CMake/releases/download/v3.13.1/cmake-3.13.1-win64-x64.msi

8) Avviare CMake GUI:

Where is the source code Cartella sources di OpenCV

Where to build the binaries indicare una nuova cartella, ad es. C:\openCV\my_build

Click su Configure (confermare se chiede di creare la nuova cartella)

Selezionare use default native compiler

Select the generator… Eclipse CDT4 MinGW Makefiles

Attendere che vengano caricate le opzioni di compilazione

Abilitare le opzioni:

- ENABLE_SOLUTION_FOLDERS

- WITH_OPENMP (per il supporto multicore)

- BUILD_DOCS

- BUILD_EXAMPLES

- BUILD_PACKAGE

- BUILD_SHARED_LIBS

- BUILD_TESTS

- BUILD_PERF_TESTS

Disabilitare le opzioni:

- WITH_IPP

- WITH_MSMF

Opzioni aggiuntive:

- WITH_CUDA (solo se la nostra GPU supporta CUDA, verificare qui:

https://www.geforce.com/hardware/technology/cuda/supported-gpus ) e richiede che sia installato il CUDA sdk

(https://developer.nvidia.com/cuda-downloads )

- BUILD_opencv_python (necessario solo se usiamo python)

Click su Configure

Click su Generate

9) Aprire Eclipse, quindi importare il progetto generato da CMake: Import General Existing Project into workspace Select Root Directory (la cartella my_build precedentemente creata)

Dovrebbe rilevare un solo progetto con il nome OpenCV-release@.... Selezionarlo

Verificare che sia deselezionato Add Project to working sets Finish

Il progetto dovrebbe comparire nella colonna Project Explorer, cliccandolo inizia

l’indicizzazione di tutto il contenuto, attendere qualche minuto

Page 3: Configurare Eclipse IDE per programmare con le librerie ... 5) Controllare se MinGW è installato correttamente: da prompt scrivere mingw32-make --version, devono comparire le info

www.unielettronica.altervista.org

10) Click con il tasto destro sul nome del progetto Build Project Se iniziano a comparire molti errori relativi a qualche modulo e il build si blocca, si può eliminare il modulo dalla compilazione (se

si prevede di non utilizzarlo):

Cliccare con il destro sul progetto in Eclipse e scegliere Delete NON RIMUOVERE i files dal workspace!!

Ri-lanciare CMake e togliere la spunta dal modulo che dà problemi

Click su Configure Click su Generate

Ripetere il punto 9

11) Finito il build senza errori (circa 30 min) Cliccare con il tasto destro sul progetto Build Targets Build install (quasi alla fine della lista) Build

Viene creata una nuova directory chiamata install dentro la cartella my_build

Navigare dentro la directory C:\opencv\my_build\install\x64\mingw\bin , copiare il percorso e aggiungerlo come nuova variabile

di ambiente (vedi punto 4)

12) Creare un nuovo progetto in Eclipse File New C/C++ project C++ Managed Build Empty Project

Prima di confermare cliccare su Next e su Advanced settings e impostare le directory e le librerie da includere come nelle tre

immagini seguenti:

Page 4: Configurare Eclipse IDE per programmare con le librerie ... 5) Controllare se MinGW è installato correttamente: da prompt scrivere mingw32-make --version, devono comparire le info

www.unielettronica.altervista.org

Nell’esempio, "C:\opencv\my_build\install\include" è il percorso radice. Gli header hpp da includere nel codice C dovranno essere

indicate tra <> a partire dal percorso radice.

Nella terza figura, oltre al Library Search Path si devono includere anche le librerie dinamiche singolarmente (la libreria core è la

base). Le librerie si trovano nella directory specificata nel search path; il nome della libreria è dato dal nome del file, senza “lib” e

senza estensione finale (es libopencv_core344.dll opencv_core344)

Quindi creare una cartella src nella struttura del progetto, e all’interno creare un nuovo file cpp

Esempio 1: HELLO WORLD

La cosa più semplice da fare per testare il funzionamento è il classico Hello World che in più scrive anche la versione di OpenCV

che stiamo usando. La versione viene restituita dalla macro CV_VERSION nella libreria opencv_core

ESEMPIO 2: Leggere un’immagine, convertirla in scala di grigi e salvarla come nuova immagine

In questo caso dovremo includere le librerie: (vedi punto 12)

- opencv_core344

- opencv_imgproc344

- opencv_highgui344

- opencv_imgcodecs344 *

e dovremo mettere un’immagine chiamata OpenCV.jpg in una directory images compresa nel workspace del progetto

* Dalla versione 3 e successive di OpenCV, le funzioni imread() e imwrite() risiedono nella libreria imgcodecs anziché in imgproc

Alla fine di ogni modifica salvare il lavoro, poi cliccando con il tasto destro sul nome del progetto: Build project Run as Local

C/C++ application

#include <opencv2/opencv.hpp> #include <iostream> using namespace std; int main() { cout << "Hello, OpenCV version "<< CV_VERSION << endl; return 0; }

// Test to convert a color image to gray #include <opencv2/opencv.hpp> #include <iostream> #include <string> int main(int argc, char** argv) { //Image to convert std::string filename = "images/OpenCV.jpg"; // Load the image file and check for success cv::Mat image; image = cv::imread( filename, CV_LOAD_IMAGE_COLOR ); // Check for invalid input if(! image.data ) { std::cout << "Could not open or find the image!" << std::endl ; return -1; } // Show the color image cv::namedWindow( "Display Image", CV_WINDOW_AUTOSIZE ); imshow( "Display Image", image ); // Convert the input file to gray cv::Mat gray_image; cvtColor(image, gray_image, cv::COLOR_BGR2GRAY); // Save the result and show the gray_image std::string rawname = filename.substr(0, filename.find_last_of(".")); cv::imwrite(rawname + "_gray.jpg", gray_image); imshow( "Display converted Image", gray_image ); cv::waitKey(0); return 0; }