Configurar Code::Blocks para OpenCV en Linux

Una guía rápida para configurar e instalar OpenCV para su uso en el entorno de desarrollo integrado Code :: Blocks en Linux. La versión de Linux que uso actualmente es Ubuntu 14.04. En el momento de escribir la versión de OpenCV para Linux utilizada es 2.4.9.

Paso 1: Descargar y extraer OpenCV para Linux

Las versiones de OpenCV se pueden descargar desde aquí:

Http://opencv.org/downloads.html

Guárdelo en la ubicación de su elección. Abra un símbolo del sistema, navegue a la ubicación de descarga y descomprima:

Opencv_codeblocks1

Paso 2: Crear un directorio de compilación OpenCV

Navegue hasta el directorio OpenCV y utilice

mkdir

Para crear el directorio de compilación:

Opencv_codeblocks2

Paso 3: Utilice CMake para crear OpenCV

Navegue hasta el directorio ‘build’ creado y ejecute el siguiente comando de CMake:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

Opencv_codeblocks3

Y luego ejecutar

make

Opencv_codeblocks9

Seguido por el

sudo make install

Opencv_codeblocks10

Paso 4: Cree un proyecto Code :: Blocks

Abra Code :: Blocks y seleccione Archivo> Nuevo> Proyecto. Seleccione Proyecto vacío:

Opencv_codeblocks4

Dar un nombre al proyecto:

Opencv_codeblocks5

Y terminar con la configuración predeterminada:

Opencv_codeblocks6

Una vez creado el proyecto, seleccione Archivo> Nuevo> Archivo vacío, para agregar el archivo main.cpp al proyecto. Copie y pegue el siguiente ejemplo de código en main.cpp:

// DetectBlobs.cpp : Defines the entry point for the console application.
//
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
int main()
{
    // Initialise
    //std::string filepath = "spots.bmp";
    std::string filepath = "spots2.jpg";
    int num_blobs = 0;
    // Load grayscale version of coloured input image
    IplImage* original  = cvLoadImage( filepath.c_str() );
    IplImage* grayscale = cvLoadImage( filepath.c_str(),
                                       CV_LOAD_IMAGE_GRAYSCALE );
    // Check bitmap image exists
    assert( grayscale );
    // Create IplImage struct for a black and
    // white (binary) image
    IplImage* img_bw = cvCreateImage( cvGetSize( grayscale ),
                                      IPL_DEPTH_8U,
                                      1 );
    // Use thresholding to convert grayscale image
    // into binary
    cvThreshold( grayscale,             // source image
                 img_bw,                // destination image
                 40,                    // threhold val.
                 255,                   // max. val
                 CV_THRESH_BINARY );    // binary
    // Create IplImage struct for inverted black
    // and white image
    IplImage* img_bw_inv = cvCloneImage( img_bw );
    IplImage* img_bw_cpy = cvCloneImage( img_bw );
    // Find connected components using OpenCV
    CvSeq* seq;
    CvMemStorage* storage = cvCreateMemStorage( 0 );
    cvClearMemStorage( storage );
    // cvFindContours the 12 + 1 extra object for
    // white backgrounds and black spots, hence
    // subtract 1
    num_blobs = cvFindContours( img_bw,
                                storage,
                                &seq,
                                sizeof( CvContour ),
                                CV_RETR_LIST,
                                CV_CHAIN_APPROX_NONE,
                                cvPoint( 0, 0 ) ) - 1;
    // Display the input / output windows and images
    cvNamedWindow( "original" );
    cvShowImage( "original", original );
    cvNamedWindow( "grayscale" );
    cvShowImage( "grayscale", grayscale );
    cvNamedWindow( "black_and_white" );
    cvShowImage( "black_and_white",
                  img_bw_cpy );
    // Wait for user key press and then tidy up
    cvWaitKey(0);
    cvReleaseImage( &original );
    cvReleaseImage( &grayscale );
    cvReleaseImage( &img_bw );
    cvReleaseImage( &img_bw_inv );
    cvReleaseImage( &img_bw_cpy );
    cvDestroyWindow( "greyscale" );
    cvDestroyWindow( "black_and_white" );
    cvDestroyWindow( "inverted" );
    return 0;
}

Paso 5: Configurar la configuración del proyecto

Haga clic con el botón secundario en la carpeta del proyecto y seleccione Opciones de generación …

Seleccione la pestaña Buscar directorios y, a continuación, seleccione la ficha Compilador. Seleccione el botón Agregar para establecer la ubicación de los archivos de inclusión:

Opencv_codeblocks7

A continuación, seleccione la ficha Vinculador y, a continuación, el botón Añadir para definir la ubicación de las bibliotecas de OpenCV, en la carpeta build / lib que se creó con CMake antes:

Opencv_codeblocks8

Seleccione la pestaña Configuración del vinculador y establezca las bibliotecas que debe incluir, en este ejemplo son core, highgui e imgproc:

Opencv_codeblocks11

Eso debería ser suficiente para permitir que el proyecto construya correctamente.

Paso 6: Pruébelo!

Esta es la imagen “spots2.jpg” usada en este programa de prueba (obviamente, guarde el archivo en un lugar donde su proyecto Code :: Blocks lo pueda encontrar):

Manchas2

Y esta captura de pantalla muestra los resultados de ejecutar el programa, dándonos la imagen en color original, la imagen equivalente en escala de grises y la imagen en blanco y negro umbral (y por lo tanto detectar el número de puntos en la imagen jpg):

Opencv_codeblocks12

Tags: , , , ,

Deja un comentario

Redes