Un vez obtenidos el alto y el ancho, como recorrer los pixels de una elipse es algo complicado y no es excesivamente importante ceñirse perfectamente a ella, simplifico recorriendo los pixels del rectángulo resultante de dichas altura y anchura. Para detectar si hay movimiento dentro del rectángulo descrito utilizo otra vez la téctica de resta de imágenes , umbralizado y recuento de pixels blancos restando la imagen actual al fondo como ya comente en otros posts.
Vídeo de demostración:
tipo objeto - color
parado - amarillo
abandonado - rojo
parado_perdido - gris
abandonado_perdido - azul
Por otra parte tras hacer todo lo demás me he encontrado con que hay un montón de variables como el angulo de la cámara, los umbrales utilizados, los tiempos entre actualizado de background o el tamaño de trabajo de las imágenes que no se pueden fijar y difícilmente calcular porque dependen de la situación de la captura(posición de la cámara en el pc, angulo de la cámara, resolución .....).
Para hacer esto configurable al usuario he aprovechado las funciones que tiene OpenCV para el manejo de archivos xml de tal forma que se puedan tener varios archivos xml de configuración por ejemplo para cada cámara y cargar en cada caso el más conveniente, pudiendo también cargar una configuración por defecto.
Y con esto en principio parece que el proyecto estaría completo salvo algún retoque. Ahora sería el momento de ponerme con la memoria... :-s
Bueno, y como lo prometido es deuda, aquí van los vídeos del programa en funcionamiento para los otros ángulos de cámara de la escena que llevo usando todo este tiempo:
Y aquí un puñao de otras escenas desde distintos ángulos: