"Arnaud Leroy" <leroy.arnaud(a)gmail.com> writes:
Bonsoir,
Bonjour,
Tout d'abord, après l'écriture de ce mail, je
me rends compte que je suis un
peu trop verbeux. Voir la section "Mes questions" si vous voulez aller à
l'essentiel.
J'aimerai utiliser la bibliothèque Olena dans mon
projet de fin d'études.
Pour cela j'ai téléchargé les sources (0.10) dans le but de compiler une
bibliothèque utilisable dans mon proj.
Plutôt que d'utiliser la release 0.10 (qui date de 2004), il vaut
mieux récupérer une version « snapshot » d'Olena 0.10a ici :
http://www.lrde.epita.fr/~levill_r/olena/snapshots/
En effet, ces snapshots bénéficient de nombreuses améliorations quant
à la compatibilité avec des outils récents (compilateurs C++, SWIG,
etc.).
(Au passage, la page
https://olena.lrde.epita.fr/cgi-bin/twiki/view/Olena/Download#CurrentOlenaB…
référence toutes les versions d'Olena disponibles.)
Malheureusement, sans succès. J'ai d'abord
essayé avec MSYS (ok
windows c'est pas l'idéal), puis sous mandriva.
De mémoire, je crois que nous n'avons pas testé Olena 0.10 sous
MinGW/MSYS. Et idem pour Cygwin (ou alors, ça fait très longtemps).
Nous sommes en revanche preneurs d'informations à ce sujet ! (Nous
disposons d'une build farm avec un hôte Cygwin, mais il est hors
service actuellement.)
Résueltat : toujours la même ; le configure a
l'air de se passer
correctement, mais au moment de faire make, il entre et sort des
répertoires sans rien compiler ...
En fait, c'est (relativement) normal : Olena 0.10 est une bibliothèque
« presque » uniquement constituée d'en-têtes C++, et aucun code n'est
compilé par défaut.
Cependant, j'ai dit « presque » : en effet, Olena 0.10 est livré d'une
part avec des outils en ligne de commande, pour appliquer des filtres
sur des images depuis un shell, par exemple ; et d'autre part, la
bibliothèque dispose de bindings vers Python et Ruby (via SWIG). Tous
ces outils sont compilés par défaut, à moins que tu n'invoques
configure avec l'option `--without-tools'.
Ma dernière option a été de récupérer à la main ce qui
me semblait
nécessaire, seulement c'est une tâche relativement fastidieuse,
récupérer les hh et hxx, d'autant que seules certaines
fonctionnalités me sont nécessaire (comme les dilatations-erosions
(fermeture) sur des image2d). C'est un peu l'horreur, j'ai passé 2
jours à essayer de compiler tout ca sur MSYS ...
La procédure d'utilisation d'Olena est mal documentée ; en pratique,
il suffit de faire
./configure --prefix=PREFIX # éventuellement, avec --without-tools
make
make install # nécessite les permissions ad hoc
# pour écrire dans PREFIX
où PREFIX est le lieu où tu veux installer Olena. Par défaut,
PREFIX = /usr/local, ce qui nécessite le plus souvent des permissions
d'administrateur. Je conseille personnellement l'installation dans un
répertoire comme $HOME/local/olena-0.10 :
./configure --prefix=$HOME/local/olena-0.10.
make
make install
Ensuite, ton utilisation d'Olena dépend de la façon dont est gérée ton
projet :
* si tu n'utilise pas les Autotools, fait en sorte de passer l'option
`-I' idoine à ton compilateur. Cela peut se faire via la variable
CXXFLAGS d'un Makefile, par exemple. En reprenant l'exemple
ci-dessus :
CXXFLAGS = -I$HOME/local/olena-0.10/include
* si tu utilises les Autotools, tu peux bénéficier du support du
fichier oln.m4 installé dans
PREFIX/olena-0.10/share/aclocal/oln.m4. Grosso modo, il suffit de :
1. ajouter ces lignes au fichier configure.ac de ton projet :
# -------------------------------------------------------------
# Remove any debugging and optimization flag from CXXFLAGS to
# please Olena configuration system (seen in Olena's
# configure.ac).
if test ! ${CXXFLAGS+set}; then
CXXFLAGS=""
fi
# Look for a C++ compiler.
AC_LANG([C++])
AC_PROG_CXX
# Olena.
AC_WITH_OLN
# Set CXXFLAGS_DEBUG, CXXFLAGS_OPTIMIZE and CXXFLAGS_STRICT.
AC_CXX_FLAGS
# -------------------------------------------------------------
2. bootstrapper ton projet en informant aclocal de la présence de
oln.m4 :
export ACLOCAL='aclocal -I ~/local/olena-0.10/share/aclocal'
autoreconf -f -v -i
(ces commandes peuvent être placées dans un script `bootstrap'
pour éviter d'avoir à les retaper, le cas échéant).
3. configurer le projet en indiquant où se situent les headers
d'Olena :
./configure --with-oln=$HOME/local/olena-0.10/include
Dans tous les cas, tu devrais pouvoir utiliser les structures
de données (images, points, itérateurs, etc.) et algorithmes ainsi :
// -----------------------------------------------------------------
// test.cc
// Binary data type.
#include <ntg/bin.hh>
// Use oln::image2d and 2d tools.
#include <oln/basics2d.hh>
// A simple algorithm.
#include <oln/level/fill.hh>
int
main()
{
// A 2d binary image of 3 rows per 3 columns.
oln::image2d<ntg::bin> ima(3, 3);
// Fill it with « true ».
oln::level::fill(ima, true);
// And so on.
// ...
}
// -----------------------------------------------------------------
---------------------
Mes questions
J'ai fait le projet d'analyse d'image l'année dernière (puzzle), dans
lequel
on utilisait la lib compilée. Serait-il encore en votre possession (logins :
leroy_a et richar_t) ?
Sur ce point, il faut voir avec Théo.
Y a-t-il possibilité de récupérer une lib compète
compilée (32 bits), je
sais c'est pas l'idéal mais bon ca éviterait des calvities précoces.
Non ; mais tu peux compiler les outils en ligne de commande (c'est
fait par défaut, sauf si tu passes --without-tools à configure). Il
seront installés dans PREFIX/olena-0.10/bin. Malheureusement, ces
outils ne sont compilés que pour des images en niveaux de gris sur 8
bits, et il y a peu d'algorithmes. Tu peux aussi jeter un coup d'oeil
à Swilena (cf. tools/swilena), mais c'est plus complexe, et il te
faudra une connaissance minimal de SWIG, et de Python et/ou Ruby.
N'hésite pas à poser des questions sur la liste de diffusion
olena(a)lrde.epita.fr, nous sommes plusieurs à y être abonnés.
Roland