Como sabéis, ahora trabajo en The Mad Video INC, una compañía estadounidense de video interactivo. En esta compañía estamos investigando cómo conseguir llevar el video a su enésima potencia, uniendo el concepto hiperenlace a los videos. Para tal fin, hemos desarrollado una serie de pruebas de reconocimiento de objetos en OPENCV. Inicialmente desarrollé esas pruebas de concepto en Windows, pero ahora, por motivos que no vienen al caso, tengo que hacer lo mismo para Linux. Linux… un gran poder y un gran dolor de muelas. De cada cuatro tutoriales que he visto tres y medio fallaban. Al final lo he logrado, y me gustaría poner aquí la forma de conseguirlo. Así que empecemos:
Instalar lo que vamos a necesitar
Para poder compilar necesitaremos un montonazo de cosas. Podría explicar para qué sirve cada una pero os iba a volver locos así que… aquí tenéis un apt-get con todo:
1 | sudo apt-get install build-essential pkg-config libpng12-0 libpng12-dev libpng++-dev libpng3 libpnglite-dev libpngwriter0-dev libpngwriter0c2 zlib1g-dbg zlib1g zlib1g-dev libjasper-dev libjasper-runtime libjasper1 pngtools libtiff4-dev libtiff4 libtiffxx0c2 libtiff-tools libjpeg8 libjpeg8-dev libjpeg8-dbg libjpeg-prog ffmpeg libavcodec-dev libavcodec52 libavformat52 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 libswscale-dev libgtk2.0-dev libjpeg62-dev subversion |
Descargarse los fuentes
He preferido descargarlos de su repositorio subversion. Tan solo tenéis que poner:
1 | svn co http://code.opencv.org/svn/opencv/trunk/opencv |
Preparar la versión
Peliagudo tema. Lo ideal: crear una carpeta dentro de los fuentes y ejecutar el comando cmake. Veamos los pasos
1 | cd opencv #me pongo dentro de la carpeta mkdir release #creo la carpeta final cd release #me meto dentro cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON .. #ejecuto la orden |
Aburrirse hasta la muerte… estoooo… compilar el asunto
1 | make |
Una vez compilado… ¡instalar!
1 | sudo make install |
Configurar la librería
Este paso es un poco complicado. La librería está, pero tienes que decir al sistema que existe. Para hacerlo, lo primero es crear un fichero opencv de configuración
1 | sudo gedit /etc/ld.so.conf.d/opencv.conf |
y meterle la linea
/usr/local/lib
Después configuramos la librería…
1 | sudo ldconfig |
y configuramos variables de entorno. Lo mejor es abrir el fichero bash y decir donde puede encontrar los paquetes
1 | sudo gedit /etc/bash.bashrc |
Y añadimos estas dos lineas al final
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig export PKG_CONFIG_PATH
Y finalmente… ¡probar!
Vale, ¿cómo lo podemos probar? Pues lo mejor es compilar los ejemplos y ver si funcionan. Para hacerlo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # Entramos en carpeta opencv cd opencv # Copiamos la carpeta de samples en algún otro lugar cp -rf samples samples2 # Nos metemos en la carpeta "c" de la copia de ejemplos cd samples2/c # Ponemos permiso de ejecución a build_all.sh chmod +x build_all.sh # Y creamos todos los ejemplos de C ./build_all.sh # Finalmente, cuando lo creemos, vamos a probar nuestro programa en C ./facedetect --cascade="/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml" --scale=1.5 lena.jpg |
Et voilà, ¡funciona!
No me lo creo, ¡pero si es la que aparece siempre!
Gente de poca fe… bueno, pues aquí tenéis otra…












































