La librerÃa openCV nos permite añadir caracterÃsticas de visión por computador a nuestras aplicaciones de iOS como puede ser unir cuatro imágenes de un mismo panorama en una sola (un ejemplo de ello lo podéis ver aquÃ: OpenCVSwiftStitch).
Muchos son los tutoriales que explican como realizar la instalación de la librerÃa pero muchos de ellos están desactualizados. Por ello os traigo este tutorial.
Si has seguido los pasos anteriores, enhorabuena ya tienes la librerÃa instalada en tu proyecto; pero aún distas mucho de poder utiizarla. Llegados a este punto, me gustarÃa anotar que la librerÃa está en el lenguaje de programación C++, querido y odiado dentro de la comunidad de programadores pero no por ello nos vamos a amedrentar. Esto significa que nuestro proyecto que está escrito en el actual lenguaje de programación de Apple, Swift 1.2 (para aquellos que ya utilicen XCode 7 beta, Swift 2) va a pasar a estar escrito en tres lenguajes de programación: nuestro actual Swift, el anterior lenguaje de iOS ObjectiveC y C++. Objective C++ únicamente está para hacer de puente entre C++ y Swift y por ello es fundamental, ya que las operaciones de visión artificial las tendremos que programar en C++ e indicarle a Swift que lo ejecute.
Es por esto que en Objective C necesitaremos crear una clase que solemos llamar "Wrapper" o envoltorio. Para hacer esto creamos un nuevo fichero del tipo objective C, automáticamente nos aparecerá una ventana que nos preguntará si queremos configurar un "Bridging Header" o una cabecera de "puenteo", le decimos que sà y se nos crearán los dos ficheros.
En la nueva cabecera de "puenteo" lo único que tenemos que escribir es #include "Wrapper.h" que se habrá creado si no habrá que crearlo. Otro detalle que hay que hacer ahora es cambiar la extensión del fichero Wrapper de "Wrapper.m" que es como lo pone por defecto Xcode a "Wrapper.mm", de esta forma nos ahorraremos posibles problemas de compilación.
Nuestro "Wrapper" debe contener las cabeceras de aquellas clases que creemos en C++ para usar la librerÃa. Lo que quiero que tengáis presente es que no podéis añadir cabeceras de Objective C a vuestros ficheros de C++ porque empezarán a aparecer errores en cabeceras que nunca deberÃamos tocar como pueden ser las de NSObject.
Otro dato más, como estamos tratando con una librerÃa de visión artificial lo suyo es que podamos trabajr sin problemas entre las clases Mat de la librerÃa y la clave UIImage de Swift, para ello os recomiento encarecidamente que copies la clase "UIImage+OpenCV" que está en el ejemplo que os enlacé arriba.
Ahora si podémos usar tranquilamente nuestra librerÃa de visión artificial.
Espero que os sea útil y os ahorre horas de búsqueda de información.
Muchos son los tutoriales que explican como realizar la instalación de la librerÃa pero muchos de ellos están desactualizados. Por ello os traigo este tutorial.
- Primero de todo hay que descargar la librerÃa de la página oficial que enlazo aquÃ.
- Una vez lo descarguemos abrimos el proyecto en el que vamos a desarrollar en XCode. A la par abrimos el Finder en la carpeta en la que hemos descargado la librerÃa y arrastramos esta del finder a la parte derecha de XCode junto con todos nuestros archivos de proyecto.
- Es hora de comprobar que XCode ha enlazado bien la librerÃa y para eso hacemos clic en el icono del proyecto y nos dirigimos a la pestaña "Build Phases". Entre las opciones que nos aparecen debemos encontrar "Link Binary with Libraries" y al expandirla con la flecha que aparece a la izquierda debe encontrarse "opencv2.framework".
- Si no aparece debemos dirigirnos a la barra de herramientas de XCode File/Add Files to... y buscamos la librerÃa.
Si has seguido los pasos anteriores, enhorabuena ya tienes la librerÃa instalada en tu proyecto; pero aún distas mucho de poder utiizarla. Llegados a este punto, me gustarÃa anotar que la librerÃa está en el lenguaje de programación C++, querido y odiado dentro de la comunidad de programadores pero no por ello nos vamos a amedrentar. Esto significa que nuestro proyecto que está escrito en el actual lenguaje de programación de Apple, Swift 1.2 (para aquellos que ya utilicen XCode 7 beta, Swift 2) va a pasar a estar escrito en tres lenguajes de programación: nuestro actual Swift, el anterior lenguaje de iOS ObjectiveC y C++. Objective C++ únicamente está para hacer de puente entre C++ y Swift y por ello es fundamental, ya que las operaciones de visión artificial las tendremos que programar en C++ e indicarle a Swift que lo ejecute.
Es por esto que en Objective C necesitaremos crear una clase que solemos llamar "Wrapper" o envoltorio. Para hacer esto creamos un nuevo fichero del tipo objective C, automáticamente nos aparecerá una ventana que nos preguntará si queremos configurar un "Bridging Header" o una cabecera de "puenteo", le decimos que sà y se nos crearán los dos ficheros.
En la nueva cabecera de "puenteo" lo único que tenemos que escribir es #include "Wrapper.h" que se habrá creado si no habrá que crearlo. Otro detalle que hay que hacer ahora es cambiar la extensión del fichero Wrapper de "Wrapper.m" que es como lo pone por defecto Xcode a "Wrapper.mm", de esta forma nos ahorraremos posibles problemas de compilación.
Nuestro "Wrapper" debe contener las cabeceras de aquellas clases que creemos en C++ para usar la librerÃa. Lo que quiero que tengáis presente es que no podéis añadir cabeceras de Objective C a vuestros ficheros de C++ porque empezarán a aparecer errores en cabeceras que nunca deberÃamos tocar como pueden ser las de NSObject.
Otro dato más, como estamos tratando con una librerÃa de visión artificial lo suyo es que podamos trabajr sin problemas entre las clases Mat de la librerÃa y la clave UIImage de Swift, para ello os recomiento encarecidamente que copies la clase "UIImage+OpenCV" que está en el ejemplo que os enlacé arriba.
Ahora si podémos usar tranquilamente nuestra librerÃa de visión artificial.
Espero que os sea útil y os ahorre horas de búsqueda de información.
SÃgueme en las distintas redes sociales