Italiano English

Compile OpenCV under CodeBlocks / MinGW on Windows

Last update: 19/01/2011 - Viewed: 8275 dal 19 Jan 2011
Keywords: None
Categories: OpenCv: Open Source Computer Library
Translation for this document is not available or is not complete,
if you are intrested to receive information please write to

In this page is shown howto compile OpenCV 2.2 + Lib TBB + Lib Eigen under Code::Blocks / MinGW on Windows.

Per maggiori informazioni sulla Libreria OpenCV fare riferimento

Per maggiori informazioni su Code::Blocks fare riferimento al sito ufficiale: http://www.codeblocks.org/

Prerequisiti

Partire dando una lettura a OpenCv Installation Guide (http://opencv.willowgarage.com/wiki/InstallGuide) e Compile OpenCV under MinGW (http://opencv.willowgarage.com/wiki/MinGW)

Questa guida è stata realizzata utilizzando:

Configurare la compilazione di OpenCV

Si suppone che Cmake e Code::Blocks siano installati e funzionanti

  • Scompattare OpenCV nella cartella desiderata, ad esempio C:\LIBS\OpenCV2.2
  • Creare una cartella che conterrà i file compilati, ad esempio C:\LIBS\OpenCV2.2\CodeBlocks.
  • Lanciare CMake-gui e impostare:
    • Where is the source code: C:\LIBS\OpenCV2.2
    • Where to buil the binaries: C:\LIBS\OpenCV2.2\CodeBlocks
  • Click su Configure, Cmake richiede il compilatore da utilizzare scegliere Code::Blocks MinGW.
  • A questo punto compare la lista dei parametri di configurazione con i valori predefiniti. Se è necessario, modificare la voce relativa e premere nuovamente Configure. Accertarsi che i parametri relativi al compilatore siano corretti. In caso contrario CMake non ha rilevato il compilatore, probabilmente perchè i percorsi del compilatore non sono nella PATH:
CMAKE_AR                   = C:/Programmi/CodeBlocks/MinGW/bin/ar.exe
CMAKE_CODEBLOCK_EXECUTABLE = C:/Programmi/CodeBlocks/codeblocks.exe
CMAKE_CXX_COMPILER         = C:/Programmi/CodeBlocks/MinGW/bin/g++.exe
CMAKE_C_COMPILER           = C:/Programmi/CodeBlocks/MinGW/bin/gcc.exe
CMAKE_LINKER               = C:/Programmi/CodeBlocks/MinGW/bin/ld.exe
CMAKE_MAKE_PROGRAM         = C:/Programmi/CodeBlocks/MinGW/bin/mingw32-make.exe
  • In questo esempio la compilazione della documentazione con doxygen presenta un bug, infatti se attivata viene generato un numero infinito di cartelle html in doc, per questo motivo ho disattivato la creazione della documentazione.
BUILD_DOXYGEN_DOCS = NO
  • Modificare i parametri desiderati come ad esempio BUILD_EXAMPLES, BUILD_NEW_PYTON_SUPPORT, WITH_QT ecc..

mingw32 SSE/SSE2 instabilities

La versione 2.2 di OpenCV compilata con MinGW32 presenta malfunzionamenti se è attiva l'ottimizzazione SSE/SSE2 O3. Gli sviluppattori consigliano di utilizzare l'ottimizzazione -O2. Vedi https://code.ros.org/trac/opencv/ticket/583
Nella configurazione di CMake, assicurarsi di aver disattivato l'opzione di default per -O3 ed impostare i flag per -O2 nel seguente modo:

USE_O3 = False
CMAKE_CXX_FLAGS_RELEASE = -O2 -DNDEBUG

per trovare la voce USE_O3 è necessario attivare l'opzione "advanced" in CMake

Aggiungere il supporto per la libreria Intel® Threading Building Blocks (TBB) ad OpenCV

Nota: A differenza di OpenCV che è distribuita con licenza FreeeBSD, la libreria TBB è distribuita con licenza GPL. Se si compila OpenCV con il supporto TBB, la versione di OpenCV da noi compilata sarà soggetta a doppia licenza GPL/FreeBSD. Infatti la licenza GPL è "persistente" e "propagativa" di conseguenza applicazioni che utilizzeranno le versioni di OpenCV da noi compilate dovranno essere soggette a licenza GPL.

La libreria viene rilasciata con licenza GPLv2+runtime exception. Questo permette la compilazione e l'utilizzo della libreria in formato dll senza l'obbligo di propagare la licenza GPLv2. per maggiori informazioni vedi: https://www.threadingbuildingblocks.org/Licensing

Per compilare OpenCV + il supporto TBB con MinGW è necessario disporre delle versioni TBB binarie compilate con MinGW. Fare riferimento a Compilare TBB con CodeBlock / MinGW su Windows (http://www.pklab.net/index.php?id=356&Lang=IT) per dettagli sulla procedura.

Supponiamo di avere la versione binaria corretta di TBB in C:\LIBS\tbb30_20101215oss\Build\windows_ia32_gcc_mingw_release. A questo punto precedere con CMake nel modo seguente:

Impostare

WITH_TBB = YES

Click su Configure. CMake rigenera la configurazione. Ora compaiono nuovi parametri di configurazione per TBB da impostare

TBB_INCLUDE_DIR = C:\LIBS\tbb30_20101215oss\include
TBB_LIB_DIR     = C:\LIBS\tbb30_20101215oss\Build\windows_ia32_gcc_mingw_release 

Aggiungere il supporto per la libreria Eigen ad OpenCV

Eigen è una C++ template library per algebra lineare, vettori matrici e relativi algoritmi.

Supponiamo di avere scompattato la libreria in C:\LIBS\Eigen2. Procedere con CMake nel modo seguente e Impostare

WITH_EIGEN2 = YES

Click su Configure, CMake rigenera la configurazione. A questo punto compaiono nuovi parametri di configurazione per EIGEN da impostare

EIGEN2_INCLUDE_PATH = C:\LIBS\Eigen2

Compilare OpenCV

Una volta completata la configurazione

  1. Click su Configure
  2. Click su Generate. CMake genera i Makefile necessari 
  3. Chiudere CMake
  4. Aprire una finestra dos in C:\LIBS\OpenCV2.2\CodeBlocks
  5. Lanciare la compilazione con
C:\LIBS\OpenCV2.2\CodeBlocks> mingw32-make.exe 

...attendere con pazienza diversi minuti...

Se la compilazione ha successo troverete i file nelle cartelle CodeBlocks\Lib, CodeBlocks\Bin e CodeBlocks\Include.

A questo punto è necessario rendere disponibili le DLL di OpenCV e delle librerie utilizzate, alle applicazioni che si andranno a realizzare. Sono possibili 3 soluzioni

  • Copiare le DLL in C:\Windows\ o in un percorso presente nella PATH
  • Copiare le DLL nella stessa cartella della applicazione
  • Impostare la PATH con il percorso che contiene le DLL

Dopo la compilazione, le DLL sono state create in C:\LIBS\OpenCV2.2\CodeBlocks\Bin. Se è stato utilizzato il supporto TBB allora saranno necessarie anche le DLL relative che in questo esempio saranno in C:\LIBS\tbb30_20101215oss\Build\windows_ia32_gcc_mingw_release\bin

Compilare un esempio di OpenCV con Code::Blocks

Creare un nuovo progetto e impostare il compilatore affinchè sia in grado di reperire i file di OpenCV ovvero:

  • In: Project / Build options / Linker settings / Link Libraries : C:\LIBS\OpenCV2.2\CodeBlocks\lib\*.dll.a
  • In: Project / Build options / Search Directories / Compiler: C:\LIBS\OpenCV2.2\CodeBlocks\include
  • In: Project / Build options / Search Directories / Linker: C:\LIBS\OpenCV2.2\CodeBlocks\Lib

Rimuovere il file Main.cpp creato di default, aprire uno dei file di esempio (C:\LIBS\OpenCV2.2\Samples\Cpp\dft.cpp) e compilare !

Vote this page
0    1    2    3    4    5   

The coding examples presented here are for illustration purposes only. The author takes no responsibility for end-user use
This work is property of Pk Lab. You can use it for free but you must retain author's copyright

Comments

0 comments (Send your comment)

Leave your comment:

Name:

Email:

Emails will not be visible or used in any way, and are not required

Comment:


Verify code:


Type the code you can see here on the left
 

Note:
  • Please keep comments relevant
  • Any content deemed inappropriate or offensive may be edited and/or deleted
  • No HTML code is allowed. Please use BBCode to format your text
  • URLs, complete of "http://" o "mailto:" , will be auto-linked