Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki

Delphi: AjpdSoft Sensor de Movimiento con WebCam - Código fuente Delphi
AjpdSoft


Nueva aplicación disponible en la sección Descargas, captura las imágenes obtenidas desde una cámara web / webcam y guarda las imágenes en formato (bmp) cada vez que detecta movimiento, permite configurar el nivel de sensibilidad del movimiento así como la velocidad de captura.



Esta aplicación captura la imagen obtenida desde una cámara web / webcam y guarda una imagen (bmp) cada vez que detecta movimiento, permite configurar el nivel de sensibilidad del movimiento así como la velocidad de captura).

AjpdSoft Sensor de Movimiento con WebCam

A través de la Sensibilidad de cambio podremos regular el porcentaje a partir del cual se considerará movimiento. Esta sensibilidad dependerá de la calidad de imagen que proporcione la WebCam, de la luz, etc. Así podremos decidir de la forma más óptima cuando se consideraría movimiento.

Mediante la Velocidad de detección podremos indicar el número de veces que se comprobará la imagen actual con la anterior para que el programa decida si ha habido movimiento.

Si el porcentaje de movimiento actual es superior al porcentaje de sensibilidad de cambio la aplicación guardará las imágenes del cambio en la ruta especificada en "Carpeta y nombre imágenes capturadas". Esta detección sólo será guardada en imagen si se ha pulsado el botón "Iniciar detección movimiento".

El fondo del componente que muestra el porcentaje de movimiento actual se tornará a rojo si ha habido movimiento, de esta forma se avisará visualmente de que lo ha habido.

Esta aplicación necesitará, para su correcto funcionamiento, una WebCam instalada en el equipo donde se ejecute. Será la encargada de capturar las imágenes del habitáculo donde se coloque:

Por supuesto, la utilidad de esta aplicación puede ser muy variada, quizás la más importante sea utilizarla como alarma para detección de intrusos. La ventaja principal de esta solución de sensor de movimiento es el coste, pues un sistema profesional que realice esta función puede ser bastante más caro que este. En principio es suficiente con un PC conectado a Internet (si ya se posee no tiene coste adicional, pues no hay elementos añadidos), la aplicación AjpdSoft Sensor de Movimiento con WebCam (gratuita / free) y una WebCam (el precio puede variar en función de la calidad de imagen, se pueden adquirir desde unos 15 euros).

Esta aplicación y el código fuente está disponible de forma totalmente gratuita en nuestra web. Para descargarla deberá ser usuario registrado, si aún no lo es pulse aquí para registrarse:

AjpdSoft Sensor de Movimiento con WebCam

 

 

ANEXO

La aplicación utiliza el API de Microsoft Video for Windows SDK, para ello deberá estar instalado en el PC donde se ejecute, esta aplicación utiliza, en concreto, la DLL: AVICAP32.DLL.

El algoritmo con el que se decide si ha habido movimiento es el siguiente (puede ser útil para desarrolladores de software, estudiantes, etc):

  private
    { Private declarations }    

    imagenActual, imagenAnterior : TBitmap;
    Contador : Integer;

  public
    { Public declarations }
  end;





...
var
  error : int64;
  i, j : integer;
  hayMovimiento : boolean;
begin
  try
    //capturamos la imagen actual
    SendMessage(idResultado, WM_CAP_EDIT_COPY, 0, 0);
    imagenActual.Assign(imagenAnterior);
    //la imagen anterior está guardada en el 
//portapapeles, la obtenemos imagenAnterior.LoadFromClipBoardFormat(cf_BitMap, ClipBoard.GetAsHandle(cf_Bitmap), 0); error := 0; //recorremos todos los píxeles de la imagen actual for i := 0 to imagenActual.Width do begin for j:= 0 to imagenActual.Height do begin //comparamos el pixel de la imagen
//actual con el correspondiente //a la imagen anterior error := error + abs(imagenActual.Canvas.Pixels[i, j] - imagenAnterior.Canvas.Pixels[i, j]); end; end; //mostramos el porcentaje de error txtError.Text := FloatToStr(trunc(error / 20000000)/100); finally end; hayMovimiento := tbSensibilidad.Position < StrToFloat(txtError.Text); if (hayMovimiento and Capturar) then begin imagenAnterior.SaveToFile(ExtractFilePath(txtUbicacionImg.Text) + IntToStr(Contador) + ExtractFileName(txtUbicacionImg.Text)); imagenActual.SaveToFile(ExtractFilePath(txtUbicacionImg.Text) + IntToStr(Contador + 1) + ExtractFileName(txtUbicacionImg.Text)); Contador := Contador + 2; end; if hayMovimiento then txtError.Color := clRed else txtError.Color := clWhite; end;


Nota:

Autores:

* Algoritmo de detección de movimiento desarrollado por Antonio RN de RS.
* Interfaz gráfica y acceso a WebCam por AjpdSoft.

Anuncios


Enviado el Sábado, 24 febrero a las 21:38:23 por ajpdsoft
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A