Mimas es un toolkit muy completo, incluso mas completo que OpenCV. Pero compilarlo es una pesadilla, el procedimiento al que llegúe es el siguiente:
- Descarga Mimas-2.1 (30 Oct 2006)
- Entra al directorio y: make -f Makefile.dist
- Aplica el ./configure y asegúrate de no tener errores, si tiene errores es por culpa de librerías que te faltan, instálalas. El configure es muy explícito y te dice qué salió mal.
- Lo que realmente es útil es la librería, asi que entra al directorio lib y: make
- Si tienes un GCC reciente(>4.2.2) lo más seguro es que no funcione, así que elimina todas las referencias a lo siguiente:
- findpipette
- pgh_2dobject
- pgh
- pgh_scene
- pol
- pol_locator_hough
- pol_locator_scale
- pol_model
- pol_scene
Y me refiero a TODO, incluyendo los *.lo, *.cc y *.Plo. Si lo hiciste bien, y tienes las librerías completas, entonces podrás compilar con make.
Ahí mismo donde tienes el Makefile podrás ver el resultado de la compilación si entras al directorio .libs (comienza con un punto por lo que no aparece en el ls, pero aparece en el ls -la). Por cierto, si te sirven, todos los *.o son objetos que puedes enlazar individualmente de manera estática.
$ cd .libs $ ls *.o (objectos compilados) $ ls libmimas* (static & shared objects)
El archivo .libs/libmimas.so.2.0.1 y sus links simbólicos son el shared object y junto con el directorio mimas-2.1/include (el cual contiene los headers) sirven para desarrollar usando mimas. Todo lo de la carpeta lib se compiló exceptuando los que eliminaste del makefile.
Y como siempre hay gente muy floja.
¿Por qué hacer todo esto?
Porque salen errores de este tipo
../include/image_op.h:100: instantiated from ‘mimas::image<T> mimas::image_func(const mimas::const_image_ref<T2, T2Ptr>&, const mimas::const_image_ref<T3, T3Ptr>&, F) [with T1 = int, T2 = int, T3 = int, F = std::multiplies<int>, T2Ptr = int*, T3Ptr = int*]’
../include/image_op_help.h:22: instantiated from ‘mimas::image<T> mimas::operator*(const mimas::const_image_ref<T, TPtr>&, const mimas::const_image_ref<T, UPtr>&) [with T = int, T1Ptr = int*, T2Ptr = int*]’
../include/image_funcs.h:390: instantiated from ‘mimas::image<T> mimas::edgeHaynesJain(const mimas::const_image_ref<T, TPtr>&, const mimas::const_image_ref<T, UPtr>&) [with T = int, T1Ptr = int*, T2Ptr = int*]’
findpipette.cc:92: instantiated from here
../include/image_op.h:75: error: no matching function for call to ‘multi_apply(boost::multi_array_ref<int, 2u>&, boost::const_multi_array_ref<int, 2u, const int*>&, boost::const_multi_array_ref<int, 2u, const int*>&, mimas::_multi_help2<int, int, int, std::multiplies<int> >&)’
[...]
make: *** [findpipette.lo] Error 1
WTF???????????
Que en español es
../include/image_op.h:75: error: no hay una función coincidente para la llamada a ‘multi_apply(boost::multi_array_ref<int, 2u>&, boost::const_multi_array_ref<int, 2u, const int*>&, boost::const_multi_array_ref<int, 2u, const int*>&, mimas::_multi_help2<int, int, int, std::plus<int> >&)’

