Android OpenCV (Linux)

Volver a la página de Inicio

=Paquete de OpenCV para Android=

Siga los pasos para descargar y configurar el paquete OpenCV para Android, el cual permite usar una gran cantidad de funciones de la líbrería OpenCV en las aplicaciones de android.

1. Para mi proyecto trabajé con la versión 2.3.1 de opencv, la última disponible en el momento (noviembre 2011). Se puede descargar de aquí. En caso de que haya una versión nueva se puede revisar aquí.

2. Una vez descargado ir a la carpeta contenedora y descomprimirlo. Puede verificar que en la carpeta descomprimida se encuentran las carpetas "OpenCV2.3.1" y "Samples".

3. A continuación cree la carpeta "AndroidOCV" en el directorio en /home/ /workspace, esta es la dirección predeterminada como espacio de trabajo para eclipse y es donde se almacenaran los proyectos realizados. ( corresponde a su nombre de usuario).

4. Ahora copie las carpetas "OpenCV2.3.1" y "Samples" en la carpeta AndroidOCV creada en el paso anterior.

=Uso de la librería OpenCV y ejemplos=

A continuación se explica el procedimiento para compilar los ejemplos que vienen en el paquete de OpenCV para Android y que hacen uso de algunas de las funciones que están disponibles con la líbrería OpenCV. Dentro de los ejemplos se podrán encontrar aplicaciones básicas que realizan diferentes funciones tales como uso de despliegue de imágenes de la cámara de video, detección de caras, manipulación de imágenes con efectos como Canny, Blur, Sepia, entre otros.

1. Inicie eclipse y seleccione como espacio de trabajo (workspace) la carpeta /home//workspace/AndroidOCV que es donde se ubicaron los ejemplos y las librerías (tutorial anterior), y donde se recomienda almacenar los nuevos proyectos.



2. Se necesita configurar el ADT para que apunte al SDK de Android. Debido a que este es dependiente del espacio de trabajo es necesario configurarlo cada vez que se crea uno nuevo. Como este es el caso, seleccione en la barra de menus Window -> Preferences.



3. Seleccione Android en el panel izquierdo y en el campo para SDK Location coloque el directorio /opt/Android-sdk/ que es donde se instalo el SDK. En el panel inferior aparecen las plataformas disponibles, seleccione la plataforma Android 2.2.



4. Dirijase a la parte inferior y haga click en Apply, luego en OK.



5. Cierre la ventana de bienvenida en caso de que este abierta.



6. En el explorador de proyectos haga click derecho en cualquier sitio dentro del panel y seleccione Import -> Import.



7. En el cuadro de diálogo que aparece seleccione General -> Existing Projects into Workspace y de click en Next.



8. En el cuadro de díalogo que aparece seleccione Select Root Directory y ponga el directorio completo del espacio de trabajo, es decir, home/ /workspace. Al hacerlo podrá observar que aparecen los proyectos disponibles para ser importados y la líbrería OpenCV. Seleccione todo y de click en Finish.



9. Aparecera un cuadro de diálogo indicando que hay errores en la construcción. De click en OK y dando click izquierdo en cualquier sitio del explorador de archivos presione F5.



10. Cuando todos los proyectos terminen de cargar no deben mostrar errores. En caso contrario puede que haya habido errores en alguno de los tutoriales anteriores.



Debido a que el AVD no permite el uso de cámara de video las pruebas se deben realizar en un dispositivo real. Aquí se explicó como configurar el dispositivo para que sea reconocido. Se deben poder compilar todos los ejemplos a excepción de los que dicen Advanced debido a que parte de su código está escrito en C++ y para esto se requiere del Android NDK. Dos secciones más adelante se explica el proceso de instalación y uso de este paquete.

=Como añadir la librería OpenCV a un nuevo proyecto=

Para hacer uso de la librería OpenCV en la aplicación se deben tener el proyecto y la librería en el espacio de trabajo. Cuando se abre eclipse con el proyecto debe importar la librería como se mostró en el paso anterior.

Después haga click derecho en la carpeta del proyecto y seleccione Properties. En el panel que aparece seleccione Android y vaya al final del panel lateral donde dice Library y seleccione add. Si la librería fue importada correctamente se podrá seleccionar en el cuadro de diálogo que aparece.

Ahora ya puede usar las funciones disponibles en la librería en su proyecto.

= RESUMEN TOTAL = 1. Seleccionar el AVD Manager: Adicionar plataforma (como dice en el tutorial) 2. Adicionar librerias OpenCV (OpenCV Library 2.4.2) File -> Import -> General -> Exixting Projects into workspace Select root directory (Seleecionar Librerias OpenCV - HACER COPIA POR SI ACASO) -> FINISH Dentro del proyecto de las librerias: Propiedades -> Android -> Seleecionar AVD correspondiente Clean (ojo por si se borra el opencv library-2.4.2.jar) Lanzar esta aplicación para que se abra el emulador. (De todas formas en el emulador no se pueden ver loe ejemplos corriendo, porque el emulador no permite el uso se periféricos, pero al ejecutarlos se generaln los archivos que se instalan en el teléfono) 3. Adicionar ejemplos File -> Import -> General -> Exixting Projects into workspace Select root directory (Selecionar directorio ejemplos HACER COPIA POR SI ACASO)) -> FINISH   Project -> Clean (OJO SOLO EL EJEMPLO CORRESPONDIENTE, EVITAR QUE SE BORRE EL opencv library-2.4.2.jar DE LA CARPETA DE LAS LIBRERIAS DE OPENCV)    Propiedades -> Android -> Seleecionar AVD correspondiente    Java Build Path -> Libraries -> Add JARs (Seleccionar en las librerias el .jar: OpenCV Library - 2.4.2 - bin - OpenCV Library-2.4.2.jar)    Java Build Path -> Order and export: Marcar la libreria y ponerla de primeras.    Ejecutar la aplicación.

=Uso de código nativo de OpenCV en los proyectos de Android=

Debido a que la librería OpenCV está diseñada para el lenguaje de programación C y C++, la mayoría de las veces se tienen las funciones en este tipo de código. Aunque no es lo ideal, Android tiene la posibilidad de añadir funciones en código nativo en los proyectos. Para esto se necesita del Android NDK (Native Development Kit). [Aquí] se puede descargar la última versión disponible.

Instalación del Android NDK
Siga los siguiente pasos para la instalación:

1. En la página seleccione la versión para linux .

2. Dirijase al folder de descargas /home//Descargas y extraiga el archivo.

3. Renombre el archivo android-ndk- a android-ndk

4. Cortelo y peguelo en la carpeta /opt/ que es donde tenemos instalados eclipse y el android-sdk (No es necesario instalar todos los programas en esta carpeta)

Dentro de la carpeta del NDK se puede mirar la documentación en /docs/.

Como construir una aplicación android que tiene código nativo
El siguiente procedimiento se puede probar en los ejemplos ''Tutorial 2 Advanced -1. Add native opencv''. y Tutorial 2 Advanced -2.Mix Java+Native OpenCV.

Una aplicación que contiene código nativo se diferencia de las demás porque dentro de la carpeta del proyecto hay una carpeta denomida JNI, que es donde se guardan los archivos .cpp y .mk que definen la forma de compilación de los archivos .cpp.

Siga los pasos a continuación para poder compilar y ejecutar este tipo de proyectos:

1. Vaya al explorador de proyectos en eclipse y verifique si dentro de la carpeta de su proyecto hay una carpeta llamada libs. En caso de que no exista creela dando click derecho en la carpeta del proyecto y seleccionando New -> Folder. Nombre a la carpeta como libs y de click en Finish.



2. Dando click derecho en la carpeta del proyecto seleccione Properties.



3. En el cuadro de diálogo que aparece seleccione Builders y en el panel lateral New....



4. En el cuadro de diálogo resultante seleccione Program y de click en OK.



5. En la pestaña main del cuadro de diálogo que aparece complete los campos de la siguiente manera:
 * Name: cualquier nombre. Por ejemplo: Tutorial Builder
 * Location: camino al directorio donde se encuentra el ndk-build. En este caso /opt/android-ndk/ndk-build.
 * Working directory: camino al directorio donde se encuentra el proyecto. Para esto seleccion Browse workspace y elija el proyecto.



6. En la pestaña Refresh seleccione Refresh resources upon completion y Recursively include sub-folders. A continuación seleccione Specific resources y haga click en Specify resources.



7. En el cuadro de diálogo que aparece seleccione la carpeta libs y seleccione Finish.



8. En la pestaña Build options seleccione las opciones que se muestran a continuación y después haga click en Specify resources.



9. Seleccione la carpeta jni y de click en Finish:



10. Finalmente presione OK dos veces y si la configuración fue correcta debera aparecer lo siguiente:



Para ejecutar los ejemplos avanzados deberá ejecutar el procedimiento anterior en cada uno de los ejemplos. Si está interesado en crear sus propias aplicaciones con código nativo puede consultar aquí.


 * NOTA:

La librería que compila los ejemplos de OpenCV por defecto viene para procesadores ARMv7. Como el dispositivo en el que estuve programando en mi proyecto tenía un procesador ARMv6 fue necesario cambiar la librería. Para esto siga los pasos a continuación:

1. Dirijase a la carpeta del proyecto.

2. Abra el archivo Application.mk que se encuentra dentro de la carpeta libs. El archivo debera contener las siguientes líneas:

APP_STL := gnustl_static APP_CPPFLAGS := -frtti -fexceptions APP_ABI := armeabi-v7a

3. Para asignar la librería correcta cambie armeabi-v7a por armeabi. Al final el archivo quedara de la siguiente manera:

APP_STL := gnustl_static APP_CPPFLAGS := -frtti -fexceptions APP_ABI := armeabi

4. Para aplicar los cambios vaya a Project -> clean y después seleccionando el explorador de proyectos presione F5. Al explorar la carpeta libs debera observar que ha aparecido una nueva carpeta nombrada armeabi.

[Ir arriba]

Volver a la página de Inicio