martes, 19 de enero de 2010
domingo, 22 de noviembre de 2009
Lo prometido es deuda
Hola
Por fin desde que lo estoy anunciando voy a subir un video de demostración del funcionamiento de mi programa.
Como podeis ver, todavía no he quitado las ventanas de notificación que utilizo a modo de traza de mi programa, pero ya le queda muy poco para terminar.
Por otro lado, se me ha ocurrido la idea de que al final de la ejecución, se muestren las estadísticas generadas, porque creo que no me va a dar tiempo a seguir con la web, pero los ficheros de log se siguen generando.
Un saludo
Por fin desde que lo estoy anunciando voy a subir un video de demostración del funcionamiento de mi programa.
Como podeis ver, todavía no he quitado las ventanas de notificación que utilizo a modo de traza de mi programa, pero ya le queda muy poco para terminar.
Por otro lado, se me ha ocurrido la idea de que al final de la ejecución, se muestren las estadísticas generadas, porque creo que no me va a dar tiempo a seguir con la web, pero los ficheros de log se siguen generando.
Un saludo
viernes, 13 de noviembre de 2009
A vueltas con los ficheros y los tipos de cadena de texto
Hola
Llevo unas semanas diseñando la interfaz gráfica con las MFC de Microsoft. De momento, en cuanto al formato y esas cosas va todo bien, me he adaptado rápido. Quizás me ha costado un poco más capturar los eventos de ratón en la ventana de OpenCV, pero al final lo he conseguido.
Pues muy bien, ahora me surge el siguiente problema: Con las MFC utilizo una clase que se llama CString que almacena cadenas de caracteres. He decidido utilizar esta clase para escribir la información en el "Fichero de Configuración" de mi programa pero no soy capaz de introducir saltos de linea, asi que he decidido intentarlo con el char * de toda la vida. Aquí es donde ha surgido el problema gordo, y es que cuando utilizo la función fprintf(miCadena,"Esto es el numero: %d",entero) (que lo que hace es como printf, pero a una variable char*) todas las variables declaradas con CString del programa se me corrompen y se ponen con caracteres extraños (chinos, japoneses...). ¿Alguna idea?
Bueno, un saludo y a ver si la próxima es la última xD.
PD: Un día de estos subo videos
Llevo unas semanas diseñando la interfaz gráfica con las MFC de Microsoft. De momento, en cuanto al formato y esas cosas va todo bien, me he adaptado rápido. Quizás me ha costado un poco más capturar los eventos de ratón en la ventana de OpenCV, pero al final lo he conseguido.
Pues muy bien, ahora me surge el siguiente problema: Con las MFC utilizo una clase que se llama CString que almacena cadenas de caracteres. He decidido utilizar esta clase para escribir la información en el "Fichero de Configuración" de mi programa pero no soy capaz de introducir saltos de linea, asi que he decidido intentarlo con el char * de toda la vida. Aquí es donde ha surgido el problema gordo, y es que cuando utilizo la función fprintf(miCadena,"Esto es el numero: %d",entero) (que lo que hace es como printf, pero a una variable char*) todas las variables declaradas con CString del programa se me corrompen y se ponen con caracteres extraños (chinos, japoneses...). ¿Alguna idea?
Bueno, un saludo y a ver si la próxima es la última xD.
PD: Un día de estos subo videos
lunes, 26 de octubre de 2009
Interfaz gráfica
Hola a todos.
Bueno, después de muchas peleas he conseguido hacerme (en parte) con las MFC y por fin soy capaz de crear un formulario de varias etapas. Sinceramente era una tontería, pero muchas veces hay que saber donde hay que poner la tontería para que funcione. La información la he obtenido de esta web: http://www.dcp.com.ar/mfc/indice.htm
A ver si ahora soy capaz de que funcione, para unirlo a lo que tenía hecho hasta el momento con la entrada de consola de Windows ("símbolo del sistema" en Windows Vista).
Por otro lado, en lo que es el programa de mi PFC de cámara estadística, ha habido un avance importante, ya que ahora la "sustracción de fondo" la hago por cada zona de cada baliza virtual, en vez de a toda la imagen, lo cual hace que los retardos que se introducian al aplicar un filtro gaussiano no se noten.
Otra modificación que he hecho aunque menos significativa es que en la imagen principal vuelven a aparecer las velocidades registradas en el velocímetro. Creo que es algo que no es importante, ya que también se aplican en el fichero de log, pero creo que queda bonito.
Un saludo, y os prometo que en unos días pondré videos de mis avances.
Bueno, después de muchas peleas he conseguido hacerme (en parte) con las MFC y por fin soy capaz de crear un formulario de varias etapas. Sinceramente era una tontería, pero muchas veces hay que saber donde hay que poner la tontería para que funcione. La información la he obtenido de esta web: http://www.dcp.com.ar/mfc/indice.htm
A ver si ahora soy capaz de que funcione, para unirlo a lo que tenía hecho hasta el momento con la entrada de consola de Windows ("símbolo del sistema" en Windows Vista).
Por otro lado, en lo que es el programa de mi PFC de cámara estadística, ha habido un avance importante, ya que ahora la "sustracción de fondo" la hago por cada zona de cada baliza virtual, en vez de a toda la imagen, lo cual hace que los retardos que se introducian al aplicar un filtro gaussiano no se noten.
Otra modificación que he hecho aunque menos significativa es que en la imagen principal vuelven a aparecer las velocidades registradas en el velocímetro. Creo que es algo que no es importante, ya que también se aplican en el fichero de log, pero creo que queda bonito.
Un saludo, y os prometo que en unos días pondré videos de mis avances.
martes, 14 de julio de 2009
Despues de dos meses...
Hola.
No sé si os habíais dado cuenta, pero llevo casi dos meses sin escribir en este blog.
Lo primero comentar, que en estos dos meses he tenido los exámenes y luego los exámenes así que esa es la razón por la que no he escrito antes.
La semana pasada tuve reunión con Antonio y Juanjo y me sugirieron la idea de hacer más bonito mi programa, y que podía utilizar las MFC, que son las librerías “Microsoft Foundation Classes” y sirven para darle al programa aspecto de ventana de windows.
Por otro lado, comentar que encontré un error grave en mi velocímetro y es que si recibía un vehículo en una de las balizas, mientras estaba haciéndose toda la transición de estados de esa baliza, no se recogía lo que pasaba en la otra, pudiéndose dar casos en los que alguno de los vehículos no fuese detectado en alguna de las balizas.
Para dar solución al problema anterior lo que he hecho ha sido dividir el procedimiento que cambia el estado del velocímetro en dos, es decir, uno que trabaja sobre la baliza de entrada, y otro que trabaja sobre la baliza de salida. Espero tener en poco tiempo un gráfico donde se explique la transición de estados en cada baliza.
Por último comentar que el tema de la identificación de momento se ha quedado aparcado porque aunque parecía sencillo, no lo es, ya que en el momento en el que el vehículo no pase exactamente igual en ambas balizas, el valor de color será bastante distinto.
Un saludo y hasta la próxima.
No sé si os habíais dado cuenta, pero llevo casi dos meses sin escribir en este blog.
Lo primero comentar, que en estos dos meses he tenido los exámenes y luego los exámenes así que esa es la razón por la que no he escrito antes.
La semana pasada tuve reunión con Antonio y Juanjo y me sugirieron la idea de hacer más bonito mi programa, y que podía utilizar las MFC, que son las librerías “Microsoft Foundation Classes” y sirven para darle al programa aspecto de ventana de windows.
Por otro lado, comentar que encontré un error grave en mi velocímetro y es que si recibía un vehículo en una de las balizas, mientras estaba haciéndose toda la transición de estados de esa baliza, no se recogía lo que pasaba en la otra, pudiéndose dar casos en los que alguno de los vehículos no fuese detectado en alguna de las balizas.
Para dar solución al problema anterior lo que he hecho ha sido dividir el procedimiento que cambia el estado del velocímetro en dos, es decir, uno que trabaja sobre la baliza de entrada, y otro que trabaja sobre la baliza de salida. Espero tener en poco tiempo un gráfico donde se explique la transición de estados en cada baliza.
Por último comentar que el tema de la identificación de momento se ha quedado aparcado porque aunque parecía sencillo, no lo es, ya que en el momento en el que el vehículo no pase exactamente igual en ambas balizas, el valor de color será bastante distinto.
Un saludo y hasta la próxima.
martes, 19 de mayo de 2009
Identificación
Hola.
Uno de los objetivos principales para contabilizar las velocidades era hacer una identificación de los vehículos que atraviesan el velocímetro con el fin de que estemos seguros de que ese es el coche al que queremos medir la velocidad.
En la anterior animación se puede observar como el coche verde adelanta al amarillo entre las dos balizas de velocímetros. Pues bien es por eso por lo que es necesario introducir la identificación, ya que si no se medirían ambas velocidades mal (aunque serían muy parecidas)
La idea es tener un identificador de color en el que se tenga la media de pixeles de los canales rojo, verde y azul (RGB) y comparar en ambos velocímetros. Esta medición se tiene que hacer en la imagen de color, en aquellos pixeles que dentro de la baliza, después de aplicar la "Sustracción de Fondo" sean blancos.
Lógicamente estos valores tienen que estar entre 0 y 255 y tuve el problema de que me daban valores superiores a 255. Gracias a la ayuda de Antonio vi que lo que me pasaba es que no inicializaba las variables locales y entonces tenían un valor basura.
Después de que Antonio me solucionase el anterior problema ahora me surgen otros dos:
Uno de los objetivos principales para contabilizar las velocidades era hacer una identificación de los vehículos que atraviesan el velocímetro con el fin de que estemos seguros de que ese es el coche al que queremos medir la velocidad.
En la anterior animación se puede observar como el coche verde adelanta al amarillo entre las dos balizas de velocímetros. Pues bien es por eso por lo que es necesario introducir la identificación, ya que si no se medirían ambas velocidades mal (aunque serían muy parecidas)
La idea es tener un identificador de color en el que se tenga la media de pixeles de los canales rojo, verde y azul (RGB) y comparar en ambos velocímetros. Esta medición se tiene que hacer en la imagen de color, en aquellos pixeles que dentro de la baliza, después de aplicar la "Sustracción de Fondo" sean blancos.
Lógicamente estos valores tienen que estar entre 0 y 255 y tuve el problema de que me daban valores superiores a 255. Gracias a la ayuda de Antonio vi que lo que me pasaba es que no inicializaba las variables locales y entonces tenían un valor basura.
Después de que Antonio me solucionase el anterior problema ahora me surgen otros dos:
- El identificador de color se toma en un cambio de estado de la baliza. Los cambios de estado en ambas balizas teóricamente deberían producirse justo a la vez , pero esto no es así, lo cual me supone que el trozo que se toma de coche en la baliza izquierda, no es la misma que en la derecha para tomar el identificador.
- El otro problema es que debido a la luz, a la hora de pasar la imagen a escala de grises, en la carretera por la que van los coches de los que estoy midiendo la velocidad, se ve todo casi del mismo color, y entonces se detectan pocos pixeles de ese coche, de no ser que sea un coche bastante oscuro.
lunes, 4 de mayo de 2009
Módulo de inicialización
Después de unas semanas sin escribir hoy por fin me he decidido hacerlo.
Primero comentar que ya tengo casi listo un módulo de inicialización. Este "mini"-programa tiene 3 fases:
El fin de este módulo es crear un fichero de configuración en el que se plasmen todas las regiones de interés que existen en el parking. Este fichero que se crea es de texto llano (txt) pero creo que puedo seguir estudiando otras posibilidades como XML o RDF
Por otro lado sigo en mi intento de perfeccionar mi velocímetro (sobre todo para que pueda ser bidireccional e identifique vehículos) pero sigo sin hacer que las STL hagan lo que tengan que hacer. Seguiré intentándolo.
Un Saludo
Primero comentar que ya tengo casi listo un módulo de inicialización. Este "mini"-programa tiene 3 fases:
- Selección de modo: se elige entre si se va a conectar una cámara o se va a analizar un vídeo.
- Selección de imagen de fondo: Se reproduce el video (o se activa la cámara) de tal forma que cuando se presiona escape, se selecciona ese frame para luego emplearlo para definir zonas y posiblemente sea el que se utilice para la substracción de fondo.
- Selección de regiones de interés: en este apartado se crean las balizas, los velocímetros y demás regiones.
El fin de este módulo es crear un fichero de configuración en el que se plasmen todas las regiones de interés que existen en el parking. Este fichero que se crea es de texto llano (txt) pero creo que puedo seguir estudiando otras posibilidades como XML o RDF
Por otro lado sigo en mi intento de perfeccionar mi velocímetro (sobre todo para que pueda ser bidireccional e identifique vehículos) pero sigo sin hacer que las STL hagan lo que tengan que hacer. Seguiré intentándolo.
Un Saludo
martes, 24 de marzo de 2009
Ficheros de log
Hola.
Hace unas semanas que no escribo, pero en estas semanas la cosa ha avanzado bastante.
Primero quiero decir que mi proyecto ya genera ficheros de log sobre los cambios de estado que se dan en las balizas virtuales. He decidido que haya un fichero de log por cada tipo de elemento, es decir, un log para velocímetros, otro para balizas. Aquí va un video de ejemplo:
Estos son los ficheros de log del video anterior:
balizas
velocimetros
Por otro lado también comentar que estoy haciendo un módulo de inicialización de tal forma que el experto lo primero que hace es ver el video o tomar una imagen de la cámara en tiempo real, y seleccionar el frame que desea para hacer el background subtraction. Luego con este mismo frame seleccionaría las diferentes zonas de la imagen.
Por último decir que gracias a la libreria "vector" de stl, he conseguido crear una estructura de datos que almacene todas las componentes de zonas, accesos, balizas y velocímetros, de tal forma que ya he automatizado todos los procesos de lectura de fichero de inicialización, como de dibujar regiones y generar ficheros de log.
Un Saludo
Hace unas semanas que no escribo, pero en estas semanas la cosa ha avanzado bastante.
Primero quiero decir que mi proyecto ya genera ficheros de log sobre los cambios de estado que se dan en las balizas virtuales. He decidido que haya un fichero de log por cada tipo de elemento, es decir, un log para velocímetros, otro para balizas. Aquí va un video de ejemplo:
Estos son los ficheros de log del video anterior:
balizas
velocimetros
Por otro lado también comentar que estoy haciendo un módulo de inicialización de tal forma que el experto lo primero que hace es ver el video o tomar una imagen de la cámara en tiempo real, y seleccionar el frame que desea para hacer el background subtraction. Luego con este mismo frame seleccionaría las diferentes zonas de la imagen.
Por último decir que gracias a la libreria "vector" de stl, he conseguido crear una estructura de datos que almacene todas las componentes de zonas, accesos, balizas y velocímetros, de tal forma que ya he automatizado todos los procesos de lectura de fichero de inicialización, como de dibujar regiones y generar ficheros de log.
Un Saludo
miércoles, 25 de febrero de 2009
Velocidad
Hola.
Desde la semana pasada lo que he hecho con mi proyecto ha sido desarrollar el velocímetro. Un velocímetro son dos balizas separadas por una distancia conocida en metros. Este es el resultado:

En el video, teóricamente mi amigo Sergio iba con el coche a 50 Km/h así que 48,214.. yo pienso que es un buen resultado.
Un Saludo.
Desde la semana pasada lo que he hecho con mi proyecto ha sido desarrollar el velocímetro. Un velocímetro son dos balizas separadas por una distancia conocida en metros. Este es el resultado:

En el video, teóricamente mi amigo Sergio iba con el coche a 50 Km/h así que 48,214.. yo pienso que es un buen resultado.
Un Saludo.
miércoles, 18 de febrero de 2009
Balizas Virtuales
Después de los exámenes, me he vuelto a poner "a saco" con el PFC y he conseguido perfeccionar la detección de movimiento y sentido de éste.
Lo primero de todo es que he creado un medio con el cual medir movimiento y sentido en una zona concreta del video. Este medio son las Balizas Virtuales.
Una baliza virtual es un conjunto de dos zonas paralelas creadas a partir de dos puntos y que se pueden utilizar para crear Accesos al parking (tanto de entrada, como salida y bidireccionales), para crear Velocímetros Virtuales (que no he desarrollado todavía pero van a ser dos balizas virtuales separadas por una distancia conocida) o simplemente se puede poner una baliza virtual en un lugar concreto para observar los objetos que pasan por allí y el sentido que llevan. Además de las zonas de puntos, también contiene una variable estado que hay que comprobar en cada frame, e indica el estado de la baliza, es decir: esperando, pasa, pasando, finalizando, indeterminación.

En la imagen se puede observar que hay 5 Balizas Virtuales, una azul oscuro, que está definiendo una zona de entrada, una roja que está definiendo una zona de salida, dos amarillas que son un velocímetro, y de momento no hacen nada, y por último una azul cyan junto a la autovía que he utilizado para observar los vehículos que circulan por esa carretera.
A la derecha de la imagen se puede observar los resultados de las mediciones de las balizas de acceso y la de la autovía y simplemente comentar que en las de acceso, la baliza 1 es la azul, y la 2 es la roja. Además donde dice coches que entraron y coches que salieron se refiere a coches que pasaron de izquierda a derecha y coches que pasaron de derecha a izquierda respectivamente. También comentar que en la autovía (baliza A-5), hay muchas indeterminaciones porque los vehiculos van muy rápido y de momento cuando se cruzan los coches, esto provoca un estado indeterminado, que espero poder arreglar en unos días
Lo primero de todo es que he creado un medio con el cual medir movimiento y sentido en una zona concreta del video. Este medio son las Balizas Virtuales.
Una baliza virtual es un conjunto de dos zonas paralelas creadas a partir de dos puntos y que se pueden utilizar para crear Accesos al parking (tanto de entrada, como salida y bidireccionales), para crear Velocímetros Virtuales (que no he desarrollado todavía pero van a ser dos balizas virtuales separadas por una distancia conocida) o simplemente se puede poner una baliza virtual en un lugar concreto para observar los objetos que pasan por allí y el sentido que llevan. Además de las zonas de puntos, también contiene una variable estado que hay que comprobar en cada frame, e indica el estado de la baliza, es decir: esperando, pasa, pasando, finalizando, indeterminación.

En la imagen se puede observar que hay 5 Balizas Virtuales, una azul oscuro, que está definiendo una zona de entrada, una roja que está definiendo una zona de salida, dos amarillas que son un velocímetro, y de momento no hacen nada, y por último una azul cyan junto a la autovía que he utilizado para observar los vehículos que circulan por esa carretera.
A la derecha de la imagen se puede observar los resultados de las mediciones de las balizas de acceso y la de la autovía y simplemente comentar que en las de acceso, la baliza 1 es la azul, y la 2 es la roja. Además donde dice coches que entraron y coches que salieron se refiere a coches que pasaron de izquierda a derecha y coches que pasaron de derecha a izquierda respectivamente. También comentar que en la autovía (baliza A-5), hay muchas indeterminaciones porque los vehiculos van muy rápido y de momento cuando se cruzan los coches, esto provoca un estado indeterminado, que espero poder arreglar en unos días
miércoles, 14 de enero de 2009
Despues de Navidades
Hola.
Estas Navidades he estado dándole al proyecto, aunque no he podido hacer todo lo que se me mandó, ya que me he pillado una gripe de campeonato que me ha tenido enfermo casi 2 semanas.
En primer lugar, las regiones ya las leo desde un fichero de texto, aunque no soy capaz de leer el fichero con etiquetas como me indicaron Juanjo y Antonio.
Por otro lado, dada una región, puedo recorrerla y saber el número de pixeles blancos que hay en ella, lo cual nos puede indicar si hay movimiento o no en esa región concreta y por tanto detectar objetos en ella, aunque de una manera muy simple.
Por último también he estado estructurando un poco el código, ya que era un poco caótico. He creado funciones para crear zonas y zonas de acceso.
Un Saludo
Estas Navidades he estado dándole al proyecto, aunque no he podido hacer todo lo que se me mandó, ya que me he pillado una gripe de campeonato que me ha tenido enfermo casi 2 semanas.
En primer lugar, las regiones ya las leo desde un fichero de texto, aunque no soy capaz de leer el fichero con etiquetas como me indicaron Juanjo y Antonio.
Por otro lado, dada una región, puedo recorrerla y saber el número de pixeles blancos que hay en ella, lo cual nos puede indicar si hay movimiento o no en esa región concreta y por tanto detectar objetos en ella, aunque de una manera muy simple.
Por último también he estado estructurando un poco el código, ya que era un poco caótico. He creado funciones para crear zonas y zonas de acceso.
Un Saludo
martes, 16 de diciembre de 2008
Background Subtraction
"Background Subtraction" (o Substracción de Fondo) es una técnica que consiste en que a todos los frames de un video se le va restando el primero (u otro que elijamos), de tal forma que en el vídeo resultado, lo que se vea sea un fondo negro, y en blanco lo que ha cambiado.
Aquí muestro un vídeo de ejemplo:
En la imagen superior izquierda, tengo el vídeo original, en la superior derecha está el original en escala de grises. En la parte inferior izquierda está la resta del video en escala de grises y el fotograma seleccionado y en la parte inferior derecha está la resta en binario.
Aquí muestro un vídeo de ejemplo:
En la imagen superior izquierda, tengo el vídeo original, en la superior derecha está el original en escala de grises. En la parte inferior izquierda está la resta del video en escala de grises y el fotograma seleccionado y en la parte inferior derecha está la resta en binario.
martes, 25 de noviembre de 2008
XML y C++
Hola.
Esta semana he estado investigando como integrar XML en C++. He sacado de la biblioteca el libro "XML C++, guía avanzada" de Fabio Arciniegas y he visto que hay más de una forma.
Por otro lado, ya me he bajado los videos del youtube, los he pasado a .avi y ya consigo mostrar el primero de ellos (que es con el que voy a trabajar) a tiempo real, lo que todavía no he empezado a investigar es como definir la zona de entrada al parking y la de salida, así que voy a intentar ver la manera en la que puedo hacerlo. (Ya se que con XML lo tengo que definir todo, pero de momento para ir probando pensaba hacérselo a pelo xD).
Además también he estado diseñando en papel los elementos a tener en cuenta en el caso de estadística de Parking, aunque de momento es sólo una idea.
Un Saludo y hasta la próxima.
Esta semana he estado investigando como integrar XML en C++. He sacado de la biblioteca el libro "XML C++, guía avanzada" de Fabio Arciniegas y he visto que hay más de una forma.
Por otro lado, ya me he bajado los videos del youtube, los he pasado a .avi y ya consigo mostrar el primero de ellos (que es con el que voy a trabajar) a tiempo real, lo que todavía no he empezado a investigar es como definir la zona de entrada al parking y la de salida, así que voy a intentar ver la manera en la que puedo hacerlo. (Ya se que con XML lo tengo que definir todo, pero de momento para ir probando pensaba hacérselo a pelo xD).
Además también he estado diseñando en papel los elementos a tener en cuenta en el caso de estadística de Parking, aunque de momento es sólo una idea.
Un Saludo y hasta la próxima.
miércoles, 19 de noviembre de 2008
Resumen
Hola amigos.
Como llevo un par de semanas sin escribir, pues voy a hacer un resumen de los avances en este tiempo sobre mi proyecto.
En primer lugar, Antonio me recomendó utilizar XML para parametrizar las posibles variables del entorno y la cámara, por eso llevo un par de semanas estudiando XML como un loco. xD.
Por otro lado, también he empezado a trabajar con una secuencia de video estática, que despues de buscar por el youtube, lo único que he encontrado que se parezca a un parking en movimiento son los siguientes videos, los cuales son con coches de juguete, pero puede ser interesante para comenzar a trabajar.
Se suponía que para esta semana debía encontrar el modo de definirle al programa los accesos al parking y que detectase los vehículos que acceden, pero gracias a la incompetencia de algunos profesores de una asignatura que no saben explicar (no voy a dar nombres, pero no es ninguna asignatura del GAVAB xD), me han hecho dedicarle demasiado tiempo a unas prácticas que desde mi punto de vista no se parecen en nada a lo que se explica en clase y encima si vas al despacho a preguntar dudas te vienen con temas filosóficos de que si estudiamos poco y esas cosas.
Ya se que esto último no viene al caso, pero necesitaba desahogarme. xD
Un Saludo
Como llevo un par de semanas sin escribir, pues voy a hacer un resumen de los avances en este tiempo sobre mi proyecto.
En primer lugar, Antonio me recomendó utilizar XML para parametrizar las posibles variables del entorno y la cámara, por eso llevo un par de semanas estudiando XML como un loco. xD.
Por otro lado, también he empezado a trabajar con una secuencia de video estática, que despues de buscar por el youtube, lo único que he encontrado que se parezca a un parking en movimiento son los siguientes videos, los cuales son con coches de juguete, pero puede ser interesante para comenzar a trabajar.
Se suponía que para esta semana debía encontrar el modo de definirle al programa los accesos al parking y que detectase los vehículos que acceden, pero gracias a la incompetencia de algunos profesores de una asignatura que no saben explicar (no voy a dar nombres, pero no es ninguna asignatura del GAVAB xD), me han hecho dedicarle demasiado tiempo a unas prácticas que desde mi punto de vista no se parecen en nada a lo que se explica en clase y encima si vas al despacho a preguntar dudas te vienen con temas filosóficos de que si estudiamos poco y esas cosas.
Ya se que esto último no viene al caso, pero necesitaba desahogarme. xD
Un Saludo
lunes, 3 de noviembre de 2008
Primer programa con OpenCV
Hola.
Pues en este fin de semana he desarrollado mi primer programa con OpenCV. He desarrollado un programa que muestra la imagen que capta por la webcam integrada de mi PC.
Para implementarlo, he utilizado "Eclipse" y lo he configurado como se dice en los blogs de los compañeros y no he tenido ningún problema.
También me he ayudado del primer ejemplo y las expliaciones de esta web, que es una introducción a OpenCV (como comenté en mi anterior mensaje). Para saber cómo tenía que hacer el programa, copié el código fuente de hellow-world.cpp, y le fui cambiando cosas, hasta conseguir un visor de webcam.
Por último comentar que una vez que conseguí ver mi careto por la webcam, no usaba la instrucción apropiada, y mostraba una foto. Luego probe a meterlo en un bucle, y me mostraba varias imágenes. Por último, mirando las funciones de la librería highgui.h, descubrí la función cvReleaseCapture(&capture) con la cual veía la imagen en tiempo real.
El último problema que tuve con el programa es que no sabía cómo hacer para que al pulsar la tecla "escape", saliese del bucle y no solamente tomase imágenes durante unos segundos. Para darle solución a este problema, abrí el código fuente de uno de los ejemplos que se instalan con el paquete de OpenCV y vi que la tecla "escape" era con (key==27).
Un Saludo y hasta la próxima.
Pues en este fin de semana he desarrollado mi primer programa con OpenCV. He desarrollado un programa que muestra la imagen que capta por la webcam integrada de mi PC.
Para implementarlo, he utilizado "Eclipse" y lo he configurado como se dice en los blogs de los compañeros y no he tenido ningún problema.
También me he ayudado del primer ejemplo y las expliaciones de esta web, que es una introducción a OpenCV (como comenté en mi anterior mensaje). Para saber cómo tenía que hacer el programa, copié el código fuente de hellow-world.cpp, y le fui cambiando cosas, hasta conseguir un visor de webcam.
Por último comentar que una vez que conseguí ver mi careto por la webcam, no usaba la instrucción apropiada, y mostraba una foto. Luego probe a meterlo en un bucle, y me mostraba varias imágenes. Por último, mirando las funciones de la librería highgui.h, descubrí la función cvReleaseCapture(&capture) con la cual veía la imagen en tiempo real.
El último problema que tuve con el programa es que no sabía cómo hacer para que al pulsar la tecla "escape", saliese del bucle y no solamente tomase imágenes durante unos segundos. Para darle solución a este problema, abrí el código fuente de uno de los ejemplos que se instalan con el paquete de OpenCV y vi que la tecla "escape" era con (key==27).
Un Saludo y hasta la próxima.
miércoles, 29 de octubre de 2008
OpenCV
Hola.
Pues como me mandaron la semana pasada, he estado investigando sobre OpenCV y ya se lo que es y para que sirve.
Según la wikipedia OpenCV es una librería libre de visión artificial originalmente desarrollada por Intel y publicada bajo licencia BSD, que permite que sea usada libremente para propósitos comerciales y de investigación con las condiciones en ellas expresadas.
En definitiva se puede decir que OpenCV es una librería para trabajar con imágenes y cámaras programando en C.
Después de saber ya lo que era OpenCV me puse manos a la obra y empecé a investigar donde se descarga y como se utiliza. Lo de descargar la librería es algo sencillo y se puede hacer desde aquí. La última versión disponible es de tan sólo hace unos días, pero de momento me he instalado la penúltima.
Por otro lado, también investigué los blogs de los compañeros para ver que plataformas utilizaban y llegué a la conclusión de que me iba a quedar con Eclipse Gavab, porque ya que este año me he decidido a utilizarlo para EDI, pues también me puede venir bien para el proyecto.
Por último tuve curiosidad sobre como hacer un programa asi que seguí buscando cositas por internet y encontré esta web, que es una introducción a la programación con OpenCV así que voy a ponerme con ello a ver que saco en claro.
Pues como me mandaron la semana pasada, he estado investigando sobre OpenCV y ya se lo que es y para que sirve.
Según la wikipedia OpenCV es una librería libre de visión artificial originalmente desarrollada por Intel y publicada bajo licencia BSD, que permite que sea usada libremente para propósitos comerciales y de investigación con las condiciones en ellas expresadas.
En definitiva se puede decir que OpenCV es una librería para trabajar con imágenes y cámaras programando en C.
Después de saber ya lo que era OpenCV me puse manos a la obra y empecé a investigar donde se descarga y como se utiliza. Lo de descargar la librería es algo sencillo y se puede hacer desde aquí. La última versión disponible es de tan sólo hace unos días, pero de momento me he instalado la penúltima.
Por otro lado, también investigué los blogs de los compañeros para ver que plataformas utilizaban y llegué a la conclusión de que me iba a quedar con Eclipse Gavab, porque ya que este año me he decidido a utilizarlo para EDI, pues también me puede venir bien para el proyecto.
Por último tuve curiosidad sobre como hacer un programa asi que seguí buscando cositas por internet y encontré esta web, que es una introducción a la programación con OpenCV así que voy a ponerme con ello a ver que saco en claro.
jueves, 23 de octubre de 2008
Presentación
Hola a todos.
Soy un alumno de Ingeniería Técnica en Informática de Sistemas, de la Universidad Rey Juan Carlos.
Este blog me va a servir para mostraros el desarrollo de mi Proyecto de Fin de Carrera. Este proyecto se titula "Cámara Estadística" y está dirigido por los profesores Antonio Sanz y Juan José Pantrigo, pertenecientes al grupo GAVAB de la Universidad.
Resumen del Proyecto: La ciudad es un entorno complejo, dinámico y lleno de datos. Las cámaras inteligentes reciben y procesan imágenes para ofrecer información de más alto nivel. En este proyecto se creará una aplicación inteligente que almacene las estadísticas que un experto decida a través de una serie de reglas en un escenario preparado.
La primera tarea que tengo que hacer es investigar acerca de OpenCV, que es una librería de C que incluye funciones para trabajar con cámaras.
Un Saludo y hasta la próxima.
Soy un alumno de Ingeniería Técnica en Informática de Sistemas, de la Universidad Rey Juan Carlos.
Este blog me va a servir para mostraros el desarrollo de mi Proyecto de Fin de Carrera. Este proyecto se titula "Cámara Estadística" y está dirigido por los profesores Antonio Sanz y Juan José Pantrigo, pertenecientes al grupo GAVAB de la Universidad.
Resumen del Proyecto: La ciudad es un entorno complejo, dinámico y lleno de datos. Las cámaras inteligentes reciben y procesan imágenes para ofrecer información de más alto nivel. En este proyecto se creará una aplicación inteligente que almacene las estadísticas que un experto decida a través de una serie de reglas en un escenario preparado.
La primera tarea que tengo que hacer es investigar acerca de OpenCV, que es una librería de C que incluye funciones para trabajar con cámaras.
Un Saludo y hasta la próxima.
Suscribirse a:
Entradas (Atom)