5/23/2014

Utilizzare OpenCV in C/C++ con Eclipse su Fedora 20

tutte le operazioni vanno fatte da utente root
comando: su
poi la vostra password da root

Per installare Eclipse per C/C++:
yum install eclipse
yum install eclipse cdt

Per "installare" OpenCV:
Sul sito di opencv c'è la guida per ubuntu (http://docs.opencv.org/trunk/doc/tutorials/introduction/linux_install/linux_install.html) io ho semplicemente trovati i corrispettivi pacchetti per Fedora:
passo1
yum groupinstall "Development Tools"
passo2
yum install cmake
passo3
yum install git
passo4
yum install gtk3 gtk2
yum install gtk3-devel gtk2-devel
passo5
yum install pkgconfig
(nota: a volte puo dare come output niente da fare perchè probabilmente abbiamo già quel pacchetto)
passo6
yum install python-devel
yum install numpy
passo7
rpm -Uvh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm

yum install ffmpeg

passo8
cd ~/<my_working _directory> (che può essere la cartella Scaricati che si trova in Home)
git clone https://github.com/Itseez/opencv.git

passo9
cd ~/opencv
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

passo10
make -j8 
         (# -j8 runs 8 jobs in parallel.
         # Change 8 to number of hardware threads available.)
sudo make install

nota per il problema:
CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found.   Please set CMAKE_CXX_COMPILER to a valid compiler path or name.

devi installare il build-essential , se insisnte a non compirare allora date il comando(da root):
yum install gcc-c++
Per configurare Eclipse con OpenCV:
segui la guida sul sito di openCV  http://docs.opencv.org/trunk/doc/tutorials/introduction/linux_eclipse/linux_eclipse.html
su fedora però gli include si trovano in
/usr/local/include
le librerie sempre in
/usr/local/lib

nota: Tipici problemi in Eclipse

1)Problema:
error while loading shared libraries: libopencv_core.so.3.0: cannot open shared object file: No such file or directory

andare nella cartella :
/etc/ld.so.conf.d/
creare il file:
opencv.conf 
inserire questo:
/usr/local/include
poi dare il comando:
ldconfig

2) per il problema: No image data
Esegui Configuration --> Arguments --> Inserire il nome dell'immagine da visualizzare

Questi passi li ho provati sul mio portatile Asus e funziona tutto fin ora :)

5/10/2014

Utilizzare OpenCV in C/C++ con Eclipse su Windows 8

Dopo aver scaricato il compilatore MinGW ed Eclipse con la prospettiva per C/C++, dobbiamo scaricare la libreria di OpenCV ,che è precompilata per windows e dovrebbe funzionare su tutti i dispositivi (altrimenti se abbiamo problemi dobbiamo compilare noi sul nostro terminale le librerie, soluzione più lunga e complicata che non illustro) dal sito opencv.org. (Ad oggi siamo alla 2.4.9).

Fatto tutto se estraiamo minGW e OpenCV nel percorso C:\ (ovviamente se scegliamo un percorso diverso dovremo modificare il path secondo la nostra scelta) inseriamo nel path,(quindi:
sistema--> impostazioni di sistema avanzate --> variabili d'ambiente --> variabili di sistema --> path)
i percorsi : C:\MinGW\bin; C:\opencv\build\x86\vc12\bin   (nel caso in cui usiamo le librerie a 32 bit).

Adesso andiamo in Eclipse utilizzando la prostettiva C/C++ (che puo essere scaricata e installata tramite help->Install new software).

Indichiamo a Eclipse il persorso per includere heder file e librerie.
Andiamo sul progretto -->clic dx-->Properties
poi in C/C++ Build --> Settings
aggiungiamo le cose che ci servono per compilare e linkare il nostro progetto(questa è una cosa che anche io devo imparare :D in generale quelle che sto mettendo consentono di far funzionare la webcam ma probabilmente includo qualche libreria inutile,che non fa mai male però :D).
Seguendo queste immagini includiamo:


Usiamo le librerie:


Nel caso in cui vogliamo attivare la webcam e vedere il contenuto in una finestra operiamo cosi, copiamo e incolliamo questo codice (l'ho preso in rete e l'ho leggermente modificato visto che è da poco che mi sto avvicinando a OpenCV):

#include <iostream>
#include "opencv2/opencv.hpp"
#include "opencv2/highgui/highgui.hpp"

using namespace cv;
using namespace std;

int main( int argc, char **argv )
{
    CvCapture *capture = 0;
    IplImage  *frame = 0;
    int       key = 0;
    /* inizializzazione Webcam */
    capture = cvCaptureFromCAM( 0 );
    if ( !capture ) {
        cout << "Errore inizializzazione webcam!\n";
        return 1;
      }
    /* create a window for the video */
    cvNamedWindow( "result", CV_WINDOW_AUTOSIZE );
    while( key != 'q' ) {
        /*prendo un frame */
        frame = cvQueryFrame( capture );
        if( !frame ) break;
        /*Visualizzo il frame corrente */
        cvShowImage( "result", frame );
        key = cvWaitKey( 20 );
    }
    /* Libero la memoria*/
    cvDestroyWindow( "result" );
    cvReleaseCapture( &capture );
    return 0;
}

Sul mio portatile Asus la webcam integrata funziona correttamente, se questo non dovesse funzionare sul tuo PC potrebbe non essere colpa mia :p ma delle librerie OpenCV che forse devono essere per forza compilate sulla tua macchina.

NOTA: Procedendo con il mio lavoro in opencv ho scoperto che alcune cose non funzionano e bisognava per forza compilare le librerie sul proprio PC. Compilare le librerie in windows non è proprio semplice infatti ho deciso di usare opencv su fedora 20 e ho fatto anche una guida su come configurare il tutto in Fedora.