Fuentes web
Entradas
Comentarios

Hace poco en la UNIversidad me vi en la necesidad de usar OpenCV (Open Source Computer Vision Library) para un proyecto, al principio me compliqué un poco con la instalación, luego de un par de tropiezos logré que funcione correctamente y por si tal vez alguien tenga la misma duda de como realizar una correcta instalación es que escribo esta instalación en 10 pasos.

1.- Primero tenemos que instalar los paquetes necesarios para poder hacer las funciones de procesar imágenes, trabajar con vídeo, etc. Para eso instalamos los siguientes paquetes mediante el apt:

- Instalamos los paquetes necesarios para descargar, compilar y configurar el OpenCV:

apt-get install build-essential subversion libgtk2.0-dev cmake pkg-config 

- Además, instalamos una seria de bibliotecas para trabajar con el OpenCV:

apt-get install libpng12-0 libpng12-dev libpng++-dev libpng3
apt-get install libpnglite-dev libpngwriter0-dev libpngwriter0c2
apt-get install zlib1g-dbg zlib1g zlib1g-dev
apt-get install libjasper-dev libjasper-runtime libjasper1
apt-get install pngtools libtiff4-dev libtiff4 libtiffxx0c2 libtiff-tools
apt-get install libjpeg8 libjpeg62-dev libjpeg8-dbg libjpeg-progs
apt-get install ffmpeg libavcodec-dev libavcodec52 libavformat52 libavformat-dev
apt-get install libgstreamer0.10-0-dbg libgstreamer0.10-0  libgstreamer0.10-dev
apt-get install libxine1-ffmpeg libxine-dev libxine1-bin
apt-get install libunicap2 libunicap2-dev
apt-get install libdc1394-22-dev libdc1394-22 libdc1394-utils
apt-get install swig
apt-get install libv4l-0 libv4l-dev
apt-get install python-numpy 

Además de las anteriormente mencionadas instale algunas otras para que no salga error con el “cmake” que haremos mas adelante.

apt-get install libgstreamer-plugins-base0.10-dev libjpeg62-dev libswscale-dev 

2.- Entramos en la carpeta que usaremos para trabajar, en mi caso usaré la carpeta “/home/urpi/svn/” que es equivalente a “~/svn/” .

cd ~/svn/ 

3.- Luego descargamos el OpenCV, para esto tenemos dos opciones:

- Descargar la última versión de OpenCV del repositorio central (trunk):

svn co https://opencvlibrary.svn.sourceforge.net/svnroot/opencvlibrary/trunk 

- Descargar la última versión probada de OpenCV (tested):

svn co https://opencvlibrary.svn.sourceforge.net/svnroot/opencvlibrary/tags/latest_tested_snapshot 

4.- Continuaremos el ejemplo con la primera opción (la otra es similar). Entramos a la carpeta principal del proyecto descargado.

cd ~/svn/trunk/opencv/ 

5.- Creamos la carpeta “release” para ahí compilar el proyecto, luego entramos en ella.

mkdir release
cd release/ 

6.- A continuación ejecutamos “cmake” y comprobamos que no nos muestre errores para continuar con la instalación, si falta algún paquete instalarlo antes de continuar.

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON .. 

7.- Luego de que comprobamos que no hay errores continuamos compilando e instalando el OpenCV:

make
sudo make install 

8.- Para que el sistema reconozca la ruta de la biblioteca ejecutamos lo siguiente:

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH 

9.- Ahora, para probar que todo salió correctamente entramos a la carpeta de los binarios ejecutables y probamos el “cxcoretest” (debería darnos todo OK):

cd bin/
./cxcoretest 

10.- Luego también podemos compilar y probar tres de los ejemplos predefinidos en C que vienen con el OpenCV:

cd ../../samples/c/
. build_all.sh

./delaunay
./facedetect lena.jpg
./bgfg_segm tree.avi 

Notas adicionales:

Entre las diversas funcionalidades de GNU Emacs se encuentra el poder usarlo como un navegador web, haciendo uso para esto del paquete w3m, el cual es un navegador web basado en texto.

1.- Primero descargamos el emacs-w3m por consola desde cvs:

cvs -d :pserver:anonymous@cvs.namazu.org:/storage/cvsroot login
CVS password:  #No colocamos ningún password, solo le damos Enter
% cvs -d :pserver:anonymous@cvs.namazu.org:/storage/cvsroot co emacs-w3m

2.- Copiamos el emacs-w3m en nuestro directorio con los demás modos de emacs instalados por nosotros, en mi caso en la carpeta “~/.emacs.d/” (sin comillas)

cp emacs-w3m - rf ~/.emacs.d/

3.- Ahora entramos al directorio para comenzar con la instalación:

cd ~./emacs.d/emacs-w3m/

4.- Si no existe el archivo “configure” tendremos que crearlo (deberá tener el paquete “autoconf” instalado previamente):

autoconf

5.- Ya con el archivo “configure” ejecutamos los siguientes comandos para instalarlo:

./configure
make
sudo make install

6.- Para terminar la instalación, escribimos en el archivo ~/.emacs lo siguiente:

(add-to-list 'load-path "~/.emacs.d/emacs-w3m/")
(require 'w3m-load)

7.- Luego de guardar esos datos, abrimos el GNU emacs y entramos al w3m con “w3m-browse-url” :

8.- Nos pedirá que ingresemos la pagina, podremos entrar a http://www.gnu.org :D

Notas adicionales:

  • Para poder ver las imagenes escribir en el archivo “~/.emacs” lo siguiente: “(setq w3m-default-display-inline-images t)” (sin comillas)
  • Para poder usar las cookies en las paginas que necesiten, agregar en el “~/.emacs” : “(setq w3m-use-cookies t)”
  • Para mayor información sobre el uso de w3m desde GNU Emacs revisar la documentación oficial o colocar “M-x w3m” dentro de GNU Emacs.
  • Información completa del proyecto emacs-w3m en su web oficial.

GNU Emacs con w3m

Desde el entorno gráfico:

Desde la consola (emacs -nw):

P.D.: La instalación se hizo en Trisquel GNU/Linux, asi que es probable que funcioné en cualquier derivado de Debian.

ERC es tal vez el modo de GNU Emacs mas sencillo de usar para una persona que recién se anima a entrar al fascinante mundo de GNU Emacs :D . Este cliente viene por defecto en las instalaciones de GNU Emacs posteriores a la versión 22.1 .

Para usarlo solo abrimos GNU Emacs e ingresamos al modo llamado erc de la siguiente forma:

1.- Pulsamos “M-x erc” (Entiéndase el M-x como pulsar Alt+x en el teclado, ademas  no usar las comillas)

2.- A continuación se nos ira preguntando por datos para realizar la conexión: Servidor IRC, puerto IRC, usuario, contraseña.

3.- Luego ya podemos continuar usando comandos de IRC, tal y como se usan en otros clientes. Por ejemplo, para ingresar al canal de chat llamado #gnu-es , usamos “/join #gnu-es” (sin comillas).

Mas información:

ERC desde Emacs

Desde el entorno gráfico:

Desde la consola (emacs -nw):

P.D.: Las capturas de pantalla se hicieron desde GNU Emacs 23.1.1 en la distribución Trisquel GNU/Linux .

Hace poco en la UNIversidad alguien mencionó en alusión al Software Libre: “si el el producto no funciona, entonces no puedo ir a un foro a gritarle al administrador que su producto es muy malo y que demando atención inmediata”.

A lo que respondí para desmentir ese mito parte por parte:

Cuando descargas algún software libre puedes proponer mejoras al software o reportar bugs, esto es algo que tienen muchos proyectos de software libre, teniendo en su mayoría una mayor rapidez de respuesta por parte de la comunidad, lo cual no sucede con los del software privativo.

1 .- En la frase se presume, al mencionar un foro, que el software se descargo de manera gratuita, ya que cuando se adquiere un servicio por parte de una empresa que representa a algún software libre, el cliente puede y debe de decir su queja a esta empresa, lo mismo que en cualquier otra.
Pregunta: “¿Si tienes una copia gratuita en el software privativo puedes ir a reclamarle a la empresa que su producto es defectuoso, o es que igualmente debes de tener un contrato con dicha empresa?”

2.- Ahora en el caso de que lo defectuoso del software sea por un error de programación y la mejora involucra el cambio de código fuente, la empresa que representa al software (ojo, no la empresa desarrolladora original necesariamente, sino la que dio el servicio) puede hacer esta modificación y mejorar el producto.
Pregunta: “¿En caso que el error fuese de programación la empresa que representa al software puede modificar el código fuente del software?”

3 .- Por ultimo en el peor de los casos que existiese un problema con la empresa que representa al software y no no se desea continuar con su servicio, se puede recurrir a otra empresa o personas, ya que al tenerse el código fuente cualquier otro desarrollador es capaz de hacer modificaciones, evitándose así la dependencia de la empresa creadora del software.
Pregunta: “En el caso que no desees adquirir el servicio de la empresa de software privativo se puede recurrir a otra empresa para que modifique el código fuente y nos arregle así el problema, o es que se genera una dependencia hacia la empresa desarrolladora?”

Por lo anteriormente mencionado con el software libre la empresas y las personas si pueden hablar de una propiedad privada, porque el software es suyo (puede hacer modificaciones, sea pagando a un desarrollador aparte o haciéndolo el mismo), dejando de ser solo un usuario al cual se le ha prestado mediante una licencia el derecho de usar el software.

Cualquier software puede tener problemas, pero el software libre permite que podamos ser independientes tecnológicamente y que podamos contribuir para avanzar en conjunto. En otras palabras el software libre es tuyo, es mio, es nuestro, es de todos.

Espero haber podido aclarar las dudas con respecto a este mito :D .

Identi.ca mode para Emacs

Como dije en un post anterior, GNU Emacs sirve para muchas cosas, entre ellas el poder usarlo para leer y portear en nuestras cuentas de identi.ca, para esto tendremos que usar el identica-mode. A continuación les explico los pasos a seguir para poder intalarlo.

1.- Verificamos que tenemos instalado el Emacs.

2.- Descargamos la ultima versión del identica-mode desde su pagina de http://git.savannah.gnu.org/cgit/identica-mode.git .

3.- Descomprimimos el archivo descargado y copiamos el archivo identica-mode.el a la carpeta “~/.emacs.d/” (sin comillas).

 tar xzvf identica-mode.tar.gz && cp identica-mode/identica-mode.el ~/.emacs.d/ 

4.- Ahora modificamos nuestro archivo de configuración de Emacs ubicado en  “~/.emacs” (en el caso no lo tengas, puedes crearlo) y en colocamos lo siguiente:

 ;;; Identi.ca mode
(add-to-list 'load-path "~/.emacs.d/")
(require 'identica-mode)
(setq identica-username "yourusername")
(setq identica-password "yourpassword")
(global-set-key "\C-cip" 'identica-update-status-interactive)
(global-set-key "\C-cid" 'identica-direct-message-interactive) 

Tendremos que haber reemplazado “yourusername” y “yourpassword” por los datos de nuestra cuenta, en mi caso “ovruni” y “**********” .

5.- Ahora, en el caso tu no estés usando identi.ca, sino un servidor personalizado con el software statusnet, entonces tu deberías agregar también:

 (setq statusnet-server "myserver.com") 

6.- Luego de guardar esos datos, ya estamos listos para usarlo, abrimos Emacs y lo usamos: “M-x identica-mode” (Entiendase el M-x como el pulsar Alt+x en el teclado).

Notas adicionales:

  • Para poder ver los iconos de cada usuario presionar la tecla “i” .
  • Para enviar un nuevo mensaje usar: “C-c C-s” (entiendase C-c como el pulsar Ctrl+c en el teclado, lo mismo luego para la “s”) .
  • Para enviar un re-dent, presionas C-c, luego das enter, luego te ubicas en el mensaje a re-dentear y en el estado saldrá el mensaje para el re-dent.
  • Para mas información sobre comandos para identica-mode, revisar el blog de Daniel Saldaña, creador del proyecto.

Emacs con Identica-mode:

Desde el entorno grafico:

Identica-mode en Emacs

Desde la consola (emacs -nw):

P.D.: La instalación se hizo en Trisquel GNU/Linux, asi que es probable que funcione en cualquier derivado de Debian.

Trisquel GNU/Linux

Logo Trisquel GNU/Linux

Desde hace un par de meses comencé a usar Trisquel GNU/Linux y me va de maravilla :D , como comente en otro post anterior antes venia usando el gNewSense, el cual aún conservo en otra partición.

Me cambié a usar Trisquel GNU/Linux debido a que se encuentran mas actualizados los paquetes y tiene un mejor soporte para mi PC (he probado que corre con muchas portátiles), además de el hecho de ser otra de las distribuciones que trabaja para conservar la libertad de los usuarios, en otras palabras ser una distribución 100% libre :D .

Captura de Pantalla

Trisquel GNU/Linux

Descargas

Identi.ca

Logo Identi.ca

Identi.ca es un servicio de red social y microblogging en software libre. Este servicio esta basado en el software status.net, el cual usa el protocolo OpenMicroblogging que es libre, además los datos están bajo la licencia Creative Commons Attribution 3.0, en otras palabras totalmente libre :D .

Este servicio no tiene nada que envidiar a el conocido servicio Twitter, se usa además las mismas notaciones para comunicarse(el # y el @), además de poderse tener grupos públicos (se usa el !).

Además en el caso no le guste a uno el servicio de identi.ca, tiene la posibilidad de sacar sus datos y de poder instalar el software de status.net en otro lado. El objetivo buscado en este proyecto es la autonomía y el derecho a administrar su propia presencia en internet, valorando sobre todo la libertad de los usuarios.

Por esto y muchas otras cosas mas que podrán encontrar en las preguntas frecuentes es un servicio que recomiendo totalmente :D .

Para seguirme en identi.ca: http://identi.ca/ovruni

GNU Emacs

Logo Emacs

Hace unos meses comencé a usar el GNU Emacs y he quedado encantado, ahora algunos se preguntarán que es GNU Emacs y porque algunos desarrolladores hablan bien de el (algunos otros tal vez al contrario).

GNU Emacs inicio siendo solo un editor de texto que fue escrito por Richard Stallman junto con Guy Steele por el año de 1975, en la actualidad existen varias versiones de Emacs, pero GNU Emacs es el EMACS (Editor MACroS para el TECO) la original.

Si bien GNU Emacs comenzó siendo un editor de texto, debido al uso de Emacs Lisp (un dialecto del lenguaje de programación Lisp) al ser este extensible es en la actualizad una herramienta útil para un gran número de tareas.

Con GNU Emacs es posible editar un conjunto de lenguajes de programación al existir un sin número de modos, estos modos nos permitirán usarlo como navegador web, administrador de archivos, reproductor multimedia, cliente de mensajería instantánea, cliente para microblog, cliente irc, lector de noticias, calculadora, calendario, jugar (tetris, pong, entre otros), además de un largo etcetera.

Debido a sus multiples usos algunos desarrolladores a modo de broma aluden a la creación de la iglesia de Emacs, en la cual Richard Stallman interpreta a San Ignucio, en la cual se dice que no hay dioses, pero si santos y que no existe el celibato.

Para entender como es el uso de GNU Emacs dejo algunos paginas que he encontrado:

  • EmacsWiki, pagina con información sobre el uso de emacs y sobre todo sobre los modos usados en Emacs.

Espero que este articulo introductorio sobre GNU Emacs haya sido de su agrado. mas adelante estaré colocando sobre algunos modos en GNU Emacs que he venido usando :D .

, cliente de mensajería instantánea

Primero dejar en claro que Linux es el solo nombre del kernel usado en el sistema GNU.

Este kernel Linux (en sus inicios llamado Freax, modificado posteriormente por Ari Lemmke colega de Linus Torvalds y con aceptación de este) era privativo cuando se lanzó en 1991 y en el 1992 cambia su licencia a la GNU GPL versión 2, pasando recién a ser Software Libre, pero luego en el año 1996 Linus Torvalds (creador del kernel) comienza a aceptar la inclusión de firmware que solo estuviese en formato binario, lo cual genera que con esto se acepte también firmware no-libre al kernel, esto en la actualidad ha ido creciendo y actualmente existe mas de 2MB de software no libre dentro del kernel Linux.

Logo de linux-libre

Actualemente Alexandre Oliva con la FSFLA (Fundación del Software Libre para Latinoamerica) mantine el proyecto Linux-libre (ver logo arriba) en el cual se han removido todas las partes no libres del kernel, con lo cual seguimos teniendo un kernel libre, pero ojo que el kernel linux a secas no es software libre, ya que no cumple con las cuatro libertades que son:

- La libertad de usar el programa, con cualquier propósito (libertad 0).
- La libertad de estudiar el funcionamiento del programa, y adaptarlo a las necesidades (libertad 1). El acceso al código fuente es una condición previa para esto.
- La libertad de distribuir copias, con lo que puede ayudar a otros (libertad 2).
- La libertad de mejorar el programa y hacer públicas las mejoras, de modo que toda la comunidad se beneficie (libertad 3). De igual forma que la libertad 1 el acceso al código fuente es un requisito previo.

El kernel linux-libre es el kernel que es usado en distribuciones como gNewSense, Trisquel, entre otras.

Más información en : http://www.fsfla.org/svnwiki/anuncio/2010-03-Linux-2.6.33-libre.es

En estas semanas en la UNIversidad estuve viendo lo que es un poco de assembler, pero sucede que cuando se explica se usa herramientas privativas como NASM, por lo cual decidí buscar herramientas libres y encontré que existía GNU Assembler (GAS) dentro del sistema GNU, el cual usa la sintaxis de AT&T, así que decidí aprender el uso de GAS y ahora procederé a explicar un par de ejemplos.

En este articulo explicare sobre imprimir una cadena, macros y algunas otras cositas que encontré por ahí. Tener en claro que esto lo he aprendido de diferentes códigos, ya que encontré poca información en la red, así que si me equivoco en algún concepto por favor díganmelo.

Cada código para poder tenerlo como ejecutable, deberemos de ensamblarlo (volverlo a código objeto “.o”) y luego Vincularlo (volverlo ejecutable). Para esto haremos los siguientes comandos en la consola con cada ejemplo encontrado debajo.

Primero lo ensamblamos:

as –o programa.o programa.s

Segundo lo vinculamos:

ld –o programa programa.o

Al final los ejecutamos:

./programa

Ejemplo1

#Definimos el segmento de datos
.section .data
	mensaje: .ascii "Hola Urpi\n" #Definimos una variable mensaje
	longitud = . - mensaje #Definimos la longitud de mensaje

#Definimos el segmento de texto
.section .text
	.globl _start #Le damos el punto de entrada _start

_start:
	movl $longitud, %edx #Asignamos longitud a edx
	movl $mensaje,%ecx #Asignamos mensaje a edx
	movl $1,%ebx
	movl $4,%eax
	int $0x80 #Similar a la llamada 21 del MS-DOS

	#Terminamos el programa
	movl $0,%ebx
	movl $1,%eax
	int $0x80 #Llamando al kernel

En el ejemplo1 usamos la sección (similar a segmento) “data” para definir variables, dentro de la sección “text” vamos a poner el código en si, cabe notar también que ahora es movl en lugar de mov y que el orden es inverso y ahora se usa “%” antes de llamar a los registros, los comentarios se pueden hacer con “//”, “#” o “/* … */” (sin las comillas), entre algunas otras diferencias.

Ejemplo2

#Creamos un macro para definir la funcion imprimir
.macro imprimir cadena longitud
	movl \longitud,%edx
	movl \cadena,%ecx
	movl $1,%ebx
	movl $4,%eax
	int $0x80
.endm

.macro terminar
	movl $0,%ebx
	movl $1,%eax
	int $0x80 #Llamando al kernel
.endm

#Definimos el segmento de datos
.section .data
	msg_saludo: .ascii "Hola Urpi\n" #Definimos una variable mensaje
	long_saludo = . - msg_saludo #Definimos la longitud de mensaje
	msg_email: .ascii "To correo es : ovegar (at) uni (dot) pe\n"
	long_email = . - msg_email

#Definimos el segmento de texto
.section .text
	.globl _start #Le damos el punto de entrada _start

_start:
	imprimir $msg_saludo $long_saludo #Mandamos msg_saludo y long_saludo al macro imprimir
	imprimir $msg_email $long_email
	terminar #Terminamos el programa, el codigo ahora esta en el macro terminar

En el ejemplo2 ahora necesitamos imprimir dos cadenas y como usaremos código de manera repetitiva código, entonces crearemos macros que vendría a ser similar a funciones.

Se puede encontrar información para poder iniciar en esta web de IBM.

Entradas antiguas »

Seguir

Get every new post delivered to your Inbox.