Compilar OpenCV con CMake para CodeBlocks

CMake es un sistema de construcción automatizado nos permite generar proyectos que pueden ser abiertos por distintas plataformas de desarrollo, como un ejemplo práctico veremos como construir opencv para el IDE CodeBlocks con el compilador MinGW, esto nos servirá como una introducción a la compilación de opencv ya que en el tutorial siguiente construiremos opencv y habilitaremos todas las funcionalidades del mismo para aprovechar al máximo el poder de opencv.

Si has hecho la instalación de opencv siguiendo mi tutorial (Instalacion de OpenCV) o uno parecido debes saber que estas usando las librerías pre-compiladas, esto quiere decir que ya alguien hizo el trabajo de compilación por nosotros lo que nos facilita la vida pues solo debemos configurar el IDE para usar las librerías y listo, pero esto tiene como inconveniente que en las librerías que nos proporcionan no están habilitadas todas las funciones de opencv como CUDA, IPP, TBB, VTK, el modulo viz y world, entre otros.

La importancia de habilitar estas funcionalidades radica en eficiencia y rendimiento que podemos obtener utilizando los núcleos cuda de la GPU de NVidia, aprovechar la programación multi-nucleos con TBB e IPP, el uso de librerías de álgebra lineal como Eigen, la visualización 3d con viz y OpenGL, entre otras.
Este es un primer tutorial que usaremos para adquirir los conocimientos necesarios para realizar la compilación, por lo que no habilitaremos todas las funciones, esto lo haremos en el siguiente tutorial.    
 

Instalar CMake y CodeBlocks


Ambos programas son gratuitos y los podemos obtener de las siguientes paginas oficiales CMake y CodeBlocks para este ultimo usaremos la versión que utiliza el compilador mingw (codeblocks-mingw-setup.exe), los descargamos e instalamos.

Por supuesto también necesitamos descargar opencv en su versión para Windows, descomprimimos los archivo en la carpeta deseada.

Generar Proyecto OpenCV para CodeBlocks


Abrimos cmake y localizamos la carpeta sources de opencv (debe estar en la carpeta de instalación de opencv), lo siguiente que debemos indicar es donde deseamos construir el proyecto podemos elegir cualquier ubicación, pero no es recomendable usar una carpeta que se encuentre dentro de la carpeta sources.  

cmake opencv
Ahora presionamos en el botón Configure,esto nos mostrara un cuadro de dialogo donde podremos seleccionar y configurar las opciones de construcción, podremos elegir si deseamos construir para Visual Studio en sus diferentes versiones, Eclipce, CodeBlocks, entre muchas otras.

Como hemos instalado CodeBlocks haremos la construcción en el mismo, hacemos la siguiente selección de opciones:

MinGW opencv
Al presionar el botón Finish se iniciara el análisis del archivo CMakeLists.txt contenido en la carpeta sources, este contiene el script para poder construir opencv. Esperamos a que termine el proceso, si todo esta correcto veremos el mensaje Configuring done.

opencv cmake mingw
En color rojo observamos las opciones de compilación que podemos habilitar, en la parte de abajo vemos aquellas opciones que se encuentran habilitadas (YES), aquellas que dicen (NO) pues no se habilitaran en la compilación.

Para habilitar OpenGL support, debemos localizar la opción WITH_OPENGL y marcarla, luego presionar Configure, si todo esta bien ahora la opción OpenGL support estará en (YES).

opencv con opengl
Podemos observar que hay muchas opciones marcadas con NO, es posible habilitarlas todas pero no es tan fácil pues estos dependen de otras librerías que no hemos instalado, configurado o construido según sea el caso.    

Para finalizar presionamos el botón Generate, si todo esta correcto veremos el mensaje Generating done.

Compilar OpenCV Mediante CodeBlocks.


Ya terminamos con cmake ahora usaremos CodeBlocks, lo ejecutamos y abrimos el proyecto OpenCV.cbp este se encuentra el la carpeta que genero cmake, en mi caso: C:\opencv\build\mingw

Para compilar nos aseguramos de que la opción de objetivo all este seleccionada y presionamos Build.

build opencv codeblocks
Esperamos un par de minutos a que termine el proceso de compilación. Una vez haya terminado cambiamos el objetivo de compilación a install para crear una carpeta del mismo nombre donde se almacenaran los archivos requeridos por codeblocks para crear aplicaciones opencv, en nuestro caso la carpeta es: C:\opencv\build\mingw\install 

instalar opencv codeblocks
Hacemos los cambios como en la imagen y presionamos build.

Configurar CodeBlocks para OpenCV


Este IDE ya cuenta con una plantilla para proyectos opencv, creamos un nuevo proyecto seleccionamos la plantilla adecuada y seguimos los siguientes pasos:

1. Abrimos CodeBlocks en el menú Settigns localizamos Global Variables, aqui localizamos las correspondientes carpetas que acabamos de crear para base (carpeta install), include, bin y lib, estos tres últimos se encuentran dentro de install.

opencv codeblocks (3)
2. Creamos el nuevo proyecto seleccionando la plantilla adecuada, damos Go y le asignamos nombre y ubicación.

opencv codeblocks (1)
opencv codeblocks (2)
opencv codeblocks (4)
3. Lo siguiente que haremos será indicar la versión de opencv que estamos usando en mi caso la 2.4.9, lo demás se queda igual, para finalizar seleccionamos el compilador debe ser GNU GCC y si deseamos crear la configuración debug y release.

opencv codeblocks (5)
opencv codeblocks (6)
Si todo esta correcto podremos ejecutar el proyecto base que crea CodeBlocks automáticamente como punto de partida y ver la imagen de Lena.

Comentarios

  1. Hola, Buen tutorial, mi pregunta es si al hacerlo así CUDA queda funcionando.

    ResponderEliminar
  2. - Microsoft Windows 7 Profesional 32bits Version 6.1.7601.17514 Service Pack 1
    - CodeBlocks 32bits Release 13.12 rev 9501 SDK Version 1.19.0
    (codeblocks-13.12mingw-setup.exe – 27-DIC-2013)
    - CMake 2.8.12.2 Qt 4.6.2 (cmake-2.8.12.2-win32-x86.exe)
    - OpenCV 2.4.9

    ResponderEliminar
  3. Links de descarga
    CMake
    https://cmake.org/files/v2.8/
    https://cmake.org/files/v2.8/cmake-2.8.12.2-win32-x86.exe

    CodeBlocks
    https://sourceforge.net/projects/codeblocks/files/Binaries/13.12/Windows/
    https://sourceforge.net/projects/codeblocks/files/Binaries/13.12/Windows/codeblocks-13.12mingw-setup.exe/download

    OpenCV
    http://opencv.org/downloads.html
    https://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.9/
    https://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.9/opencv-2.4.9.exe/download

    ResponderEliminar
  4. Fuiste de gran ayuda, estuve buscando un método desde hace varios días, en serio te lo agradezco

    ResponderEliminar
  5. Y para compilar sólo los de Java? Para el reconocimiento facial especificamente... La carpeta face del modules que se encuentra de opencv_contrib Como se hace?

    ResponderEliminar
    Respuestas
    1. Para compilar para Java debes tener instalar Apache Ant y el JDK para que CMake pueda detectarlos correctamente ambos deben estar agregados al PATH, al configurar el proyecto con CMake seleccionar los módulos que deseas compilar.

      Eliminar
    2. Si, exactamente ésto hize. Pero al compilar con msbuild.exe no me generó el archivo opencv_341.dll, sólo me generó el aopencv-341.jar.
      Como lo explico aquí.
      http://answers.opencv.org/question/188081/how-to-compile-opencv-and-opencv_contrib-with-the-face-recognition-modules-faces/

      Eliminar

Publicar un comentario

Temas relacionados

Entradas populares de este blog

tkinter Grid

Conectar SQL Server con Java

JavaFX Uso de ComboBox

tkinter Canvas

Histogramas OpenCV Python