Primero que nada, para esta tarea utilice las siguientes herramientas:
- Opencv: Habilitando camara web
- PIL: Leer frames
- Numpy: Realizo los cálculos de imágenes
Utilice la cámara web que viene instalada en mi laptop y use capturas con una resolución de 160 x 120.
Detectando movimiento
Para la detección de movimiento detectaron los cambios de movimiento en 2 frames, se binariza, se calcula la diferencia de su posición entre esos 2 frames y se aplica Gasussian Blur para eliminar ruido.
Se obtienen dos imágenes, un donde hubo movimiento y otra en donde no hubo, se busca el borde y después se crea una rejilla, que se modifica según sea la resolución del vídeo, que en este caso el vídeo es de 160 x 120 y mas o menos queda así:
Se obtienen dos imágenes, un donde hubo movimiento y otra en donde no hubo, se busca el borde y después se crea una rejilla, que se modifica según sea la resolución del vídeo, que en este caso el vídeo es de 160 x 120 y mas o menos queda así:
Una rejilla de 10 x 8:
Y cuando se detecta el movimiento, se dibuja un triángulo de color, donde indica que hubo movimiento.
Ejemplos:
Vídeo 1:
Vídeo 2:
Vídeo 3:
Vídeo 4:
Comentarios:
En esta parte seria bueno calibrar bien la detección, ya que con demasiado ruido se llega a detectar movimiento innecesario.
Dirección:
Una pequeña captura donde se detecta el movimiento:
Se muestra si fue en derecha, izquierda, arriba o abajo.
Aquí el código de lo anterior:
Código:
Animaciones
En esta parte, detecte cada movimiento y lo pase a un frame que se dibuja como un cuadrado (Color negro), así generando casa frame en imágenes y guardándolas en una carpeta, si se sigue una secuencia de cada imagen, se mostrara los frames de manera continua.
Aquí un pequeño vídeo:
Muy simple la verdad, utilice el teclado para ir viendo la imagen una por una.
Código de lo anterior:
Código:
Pruebas
En esta parte, realice pruebas con vídeos con resoluciones de 160 x 120 y de formato avi, eso realizaba el proceso mucho mas rápido.
Errores
Utilizaba vídeos con resolución de 640 x 480, pero por alguna razón el programa dejaba de funcionar y la terminal de igual manera, dejaba de funcionar, entonces la solución fue grabar vídeos de 160 x 120 y así el programa funcionaba, no al 100% pero al menos se detectaba el movimiento y el programa funcionaba
Conclusiones:
- Tomar en cuenta el formato a grabar
- Captar vídeos con una resolución de 160 x 120
Movimiento 2D en cuatro direcciones con video real y una animación, cámara estacionaria. 10 pts.
ResponderEliminar