Primero hay que instalar algunas dependencias:
sudo apt-get install freeglut3-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libxi-dev libxmu-headers libxmu-dev libjpeg62-dev libglib2.0-dev libgtk2.0-dev
Después descargar, extraer, configurar y compilar el código de ARToolKit:
wget "http://sourceforge.net/projects/artoolkit/files/artoolkit/2.72.1/ARToolKit-2.72.1.tgz/download" -O ARToolKit-2.72.1.tgz
tar xzvpf ARToolKit-2.72.1.tgz
cd ARToolKit
./Configure
make
Al hacer ./Configure
se pueden seleccionar varios tipos de entrada (elegir GStreamer, la opción 5):
"1: Video4Linux" para capturadoras de video (mediante V4L versión 1).
"2: Video4Linux+JPEG Decompression (EyeToy)" para cámaras Play Station EyeToy (mediante V4L versión 1).
"3: Digital Video Camcoder throught IEEE 1394 (DV Format)" para cámaras firewire.
"4: Digital Video Camera throught IEEE 1394 (VGA NONCOMPRESSED Image Format)" para cámaras firewire.
"5: GStreamer Media Framework" para webcams USB.
Luego hay que copiar los ficheros de cabecera a nuestra carpeta de include:
sudo cp -R ./include/AR /usr/local/include/
Y las librerías a la carpeta de librerías:
sudo cp ./lib/*.a /usr/local/lib/
Ahora hay que crear el fichero para que pkg-config
sepa donde están estas nuevas librerías y sus ficheros de cabecera. En Ubuntu 10.10 esto se configura en la carpeta /usr/lib/pkg-config
o en /usr/lib/pkgconfig
ya que puede variar de una instalación a otra. Hay que crear un fichero llamado AR.pc
dentro de esa carpeta con este contenido (siendo super-usuario):
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${exec_prefix}/include
Name: AR
Description: ARToolKit libs and includes
Version: 2.72.1
Libs: -L${libdir} -lARgsub -lARgsub_lite -lARgsubUtil -lARMulti -lARvideo -lAR
Cflags: -I${includedir}/AR
Así se podrá usar pkg-config
para crear los Makefile
más facilmente:
$ pkg-config --cflags AR
-I/usr/local/include/AR
$ pkg-config --libs AR
-L/usr/local/lib -lARgsub -lARgsub_lite -lARgsubUtil -lARMulti -lARvideo -lAR
También es recomendable meter la ruta donde se han copiado las librerías a la variable de entorno LD_LIBRARY_PATH
. Se puede configurar en el fichero “~/.bashrc
” que se encuentra en la carpeta home del usuario.
export LD_LIBRARY_PATH=/usr/local/lib
Antes de ejecutar alguno de los ejemplos que se encuentran en la carpeta “bin
” de ARToolKit hay que exportar una variable de configuración para que ARToolKit sepa de dónde capturar el vídeo y en qué formato hacerlo. Yo por ejemplo uso esta configuración:
export ARTOOLKIT_CONFIG="v4l2src device=/dev/video0 use-fixed-fps=false ! ffmpegcolorspace ! capsfilter caps=video/x-raw-rgb,bpp=24 ! identity name=artoolkit ! fakesink"
Ojo al dispositivo que queráis usar (devide=/dev/video0
). También se puede configurar el tamaño de las imágenes capturadas usando los parámetros height
y width
, aunque es posible que de fallos si se selecciona un tamaño no compatible con la cámara.
export ARTOOLKIT_CONFIG="v4l2src device=/dev/video0 use-fixed-fps=false ! ffmpegcolorspace ! capsfilter caps=video/x-raw-rgb,bpp=24,width=640,height=480 ! identity name=artoolkit ! fakesink"
También se puede usar un fichero de vídeo para hacer pruebas o para desarrollar en un ordenador que no tenga webcam real:
export ARTOOLKIT_CONFIG="filesrc location=gstreamer_test_xvid.avi ! decodebin ! ffmpegcolorspace ! capsfilter caps=video/x-raw-rgb,bpp=24 ! identity name=artoolkit ! fakesink"
Para poder ver qué es lo que se ve en la cámara y saber si realmente esta funciona se puede usar el siguiente comando:
gst-launch-0.10 v4l2src ! xvimagesink
De la misma manera se puede utilizar para probar las configuraciones a pasar a la variable ARTOOLKIT_CONFIG
, con la salvedad de que habrá que cambiar fakesink
por xvimagesink
según si se va a probar gst-launch-0.10
o se va a configurar la variable de ARToolKit.
Una vez configurada la variable ARTOOLKIT_CONFIG
podemos ir a la carpeta bin
de ARToolKit y ejecutar uno de los test:
cd bin
./simpleTest
Si se utiliza V4L1 con algunas cámaras de vídeo en vez de devolver una paleta RGB se devuelve una paleta YUV que ARToolKit no espera recibir por defecto. Para solucionar el problema hay que añadir la siguiente opción a la variable de configuración ARTOOLKIT_CONFIG
. Se pueden ver otras opciones de configuración con V4L1 en la documentación oficial.
-palette=YUV420P
Fuentes: http://www.block4.com/index.php?id=107
http://artoolkit.sourceforge.net/apidoc/video/#VideoLinuxV4L