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.
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.
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:
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.
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).
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.
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
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.
2. Creamos el nuevo proyecto seleccionando la plantilla adecuada, damos Go y le asignamos nombre y ubicación.
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.
Si todo esta correcto podremos ejecutar el proyecto base que crea CodeBlocks automáticamente como punto de partida y ver la imagen de Lena.
Hola, Buen tutorial, mi pregunta es si al hacerlo así CUDA queda funcionando.
ResponderEliminar- Microsoft Windows 7 Profesional 32bits Version 6.1.7601.17514 Service Pack 1
ResponderEliminar- 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
Links de descarga
ResponderEliminarCMake
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
Fuiste de gran ayuda, estuve buscando un método desde hace varios días, en serio te lo agradezco
ResponderEliminarY 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?
ResponderEliminarPara 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.
EliminarSi, 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.
EliminarComo lo explico aquí.
http://answers.opencv.org/question/188081/how-to-compile-opencv-and-opencv_contrib-with-the-face-recognition-modules-faces/