Howto: Compilar Mimas 2.1 y su libmimas.so en GCC 4.2.x
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> >&)’


Hola, utilizo Mimas para un programa que desarrollé hace un par de años y desde hace un tiempo me encuentro con el error que comentas de la librería Boost sobre el método multi_apply(). Parece que en las últimas versiones de la librería ese método ha desaparecido o ha sido renombrado. ¿Sabes algo al respecto?
Muchas gracias,
Juan
P.D. Animo a toda las personas interesadas en visión artificial a probar la librería Mimas ya que, aunque es un poco más compleja que otras a la hora de compilarla, es una herramienta realmente potente.
Hola, desde hace horas estoy intentando de compilar mimas, pero no tengo éxito… la tuya es la única instrucción que se encuentra en el web, pero funciona tampoco
(
¿Puedes decirme que versión de la librería “boost” estás usando?
Porque tengo muchos errores así:
registration.cc:193: instantiated from here
/usr/include/boost/multi_array/algorithm.hpp:56: error: no se puede convertir ‘boost::detail::multi_array::const_sub_array<std::complex, 1ul, const std::complex*>’ a ‘long unsigned int’ en assignment
Ayúdame ;o)
Saludos, mel
Pues si quieres intentale con la version que ya tengo, es de 32 bit.
http://zarzamora.com.mx/of/mimas2.1-devkit-32bit-shared-gcc4.2.3.tar.bz2
Ojala te sirva