Saturday, January 19, 2013

Cubieboard + OpenCV


¿Qué es la visión artificial?

Cuando un ordenador procesa una imagen, no entiende lo que realmente se ve en ella.
Pero y si necesitamos detectar una persona, o una cara en concreto, o un objeto, o seguir un color, o encontrar una forma, interpretar lo que vemos, etc.
De todo esto se encarga la visión artificial.

¿Cómo aplicamos la visión artificial?

Bueno aquí es donde viene en nuestra ayuda OpenCV, es un conjunto de librerías que nos permite abstraer al programador de la parte más laboriosa de la programación y utilizar funciones ya preparadas para todas las necesidades que tengamos.
Hay posibles instalaciones para Linux, android, windows, ios

Instalando OpenCV


He sacado toda la información técnica de este blog, muy bueno, no solo por este artículo sino por muchos otros.

Fuente: http://mitchtech.net/raspberry-pi-opencv
Fuente: http://docs.opencv.org/doc/tutorials/introduction/linux_install/linux_install.html#linux-installation

Raspbian : Linux raspberrypi 3.4.19-a10-aufs+
OpenCV: OpenCV-2.4.3.tar.bz2 (os recomiendo entrar y descargar la última versión)
http://OpenCV.org

¿Quizas antes de hacer la instalación deberías decidir si libjpeg o libjpeg-turbo?
May be if you are reading this you should to think libjpeg or libjpeg-turbo?
  1. ¿Dónde vamos a hacer la instalación?
    1. Tarjeta ¿Hay espacio?, Con 2 GB suficiente pero mejor una de 8GB (que luego ya iremos necesitando)

      S.ficheros     Tamaño Usados  Disp Uso% Montado en
      rootfs           7,3G   1,5G  5,5G  22% /


      NOTA: Se hace un poco lenta, pero funciona

      ¿Por qué sobre la tarjeta? En el futuro quiero que esta placa sea el "razonador lógico" (no me gusta la definición inteligencia artificial), además de portátil debe consumir poco y un disco duro por muy ligero que sea, tiene un consumo muy alto para baterías (1A a 5 V)
  2. Descargar la última versión
    1. Yo instale esta OpenCV-2.4.3.tar.bz2  de todas formas buscar la última versión.
  3. Dependencias
    Bueno para hacer la instalación necesitamos hacer nuestra máquina con una base de herramientas necesarias. Describir cada una de ellas se escapa de este blog, pero las más interesante es cmake que nos permitirá configurar nuestra compilación e instalación.

    sudo apt-get -y install build-essential cmake pkg-config libpng12-0 libpng12-dev libpng++-dev libpng3 libpnglite-dev zlib1g-dbg zlib1g zlib1g-dev pngtools libtiff4-dev libtiff4 libtiffxx0c2 libtiff-tools

    sudo apt-get -y install libjpeg8 libjpeg8-dev libjpeg8-dbg libjpeg-progs ffmpeg libavcodec-dev libavcodec53 libavformat53 libavformat-dev libgstreamer0.10-0-dbg libgstreamer0.10-0 libgstreamer0.10-dev libxine1-ffmpeg libxine-dev libxine1-bin libunicap2 libunicap2-dev libdc1394-22-dev libdc1394-22 libdc1394-utils swig libv4l-0 libv4l-dev python-numpy libpython2.6 python-dev python2.6-dev libgtk2.0-dev pkg-config
  4. Ahora vamos por pasos a instalar
    1. Nuestro directorio OpenCV con su versión OpenCV-2.4.3.tar.bz2

      tar -xvjpf OpenCV-2.4.3.tar.bz2
      rm OpenCV-2.4.3.tar.bz2
      cd OpenCV-2.4.3.tar.bz2
      mkdir build
      cd build

    2. Preconfigurando la compilación
      Con esto le diremos que nos compile lo que necesitemos, con este se crea una instalación bastante estándar, además de instalar el soporte para python


      cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON -D BUILD_EXAMPLES=ON ..

      make
      sudo make install

  5. Últimos pasos
    1. Unas configuraciones para indicar las bibliotecas y librerías.

      $ sudo vi /etc/ld.so.conf.d/opencv.conf

      Si no existe lo creamos y añadimos la siguiente línea

      /usr/local/lib

      Configuramos el enlace dinámico de las librerías

      $sudo ldconfig -v

    2. Configuramos el sistema de bashrc de modo global

      sudo vi /etc/bash.bashrc
      Y añadimos la siguiente línea

      PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig export PKG_CONFIG_PATH
  6. Probando OpenCV
    1. Nos vamos al directorio de ejemplos de C
      ~/OpenCV/OpenCV-2.4.3/build/bin

      convexhull

      kmeans

      drawing

Hull

Cluster


Dibujos



Siguientes pasos

7 comments:

  1. Gracias por tus contribuciones, tengo una cubie pero todavía no la puse en marcha, te voy ha seguir para asi tener una guia e inspiracion. Has puesto XBMC en tu cubie? quisiera saber si funciona.
    sergio bruno
    ser@spray.se

    ReplyDelete
    Replies
    1. No son grandes cosas, de hecho suelen ser cosas que ya ha hecho otra gente :$ de hecho están los enlaces por si hay alguna duda o problema.

      Pues el XBMC no lo he puesto, no lo probé y justo estoy en un momento algo malo para hacer pruebas, me quedé sin ordenador de sobremesa y voy a hacer funcionar la cubieboard por el puerto ethernet exportando el display, pondré como hacerlo porque puede resultar útil y luego probaré la webcam y puede que pruebe el XBMC, ya me ha picado el gusanillo

      Delete
  2. Hola,

    Acabo de recibir la cubieboard y la he puesto linaro, ando pez con linux, pero he oido que va mas fluido con este sistema operativo. Me compre la cubie para bajar peliculas y reproducirlas, una especie de htpc. Hoy por fin he conseguido meter mi hdd de 2 teras en la cubie, me lo ha reconocido el linaro, pero cuando me he puesto a reproducir una pelicula de 720p la imagen va realentizada. Somos varios los que estamos comprando este producto y me gustaría saber tu experiencia con la cubieboard, cual es el mejor reproductor para las peliculas hd (mkv) y si sabes porque puede ser que las distintas peliculas que he intentado reproducir, vayan lentas.

    Gracias,
    David

    ReplyDelete
    Replies
    1. Buenos días David.

      Hice unas pruebas al respecto con una pregunta similar, y si que pude reproducir sin problemas video en HD 1080 pero desde el arranque de android, y va perfectamente, ahora con linux ya era otro cantar, yo el reproductor que usé para probar es el mplayer (sudo apt-get install mplayer y lo descarga del repositorio) pero eso si va a trompicones.

      Aunque te recomiendo un vistazo al XBMC (http://xbmc.org/)
      Espero haberte ayudado.

      Delete
  3. Muchas gracias por la respuesta, en principio me gustaría que el sistema operativo principal fuese linaro, ya que parece que va mas fluido que el Android a la hora de navegar y abrir ventanas.

    De nuevo gracias por la ayuda.

    ReplyDelete
  4. Buenas , gracias por tu aporte ! Pregunta: quiero saber si puedo usar las librerías de opencv en Python desde la cubie 2 instalando Linaro ! Gracias x tu ayuda

    ReplyDelete
    Replies
    1. Buenas.
      Pues la verdad no he probado mucho el linaro, pero si tienes bien instalado el python, no deberías tener problemas a la hora de usarlo.
      Reconozco que me falta hacer una comparativa de las funciones en C++ vs Python para ver la diferiencia de tiempo y recursos empleados.

      Si lo consigues y haces alguna publicación, y me pasas el enlace lo comparto.
      Un saludo y gracias por comentar

      Delete