PDA

Ver la Versión Completa : Problema con truco- Capturar Imagen WebCam Avanzado - Direct X


alquimista
28-06-2022, 19:02:54
Se que tiene unos años el post de truco. Pero me he puesto a usar la webcam con DirectX después de tener una app hecha de hace años con avicap32.dll y no funcionar en todas las cámaras.
He implementado lo que comentáis en el truco- Capturar Imagen WebCam Avanzado - Direct X, creo que falta un Tpanel en el código y me funciona para todas las cámaras, pero he observado un problema al utilizar ventanas de mensajes típicas (MessageBox, MessageDlg, etc).
He hecho un programa que pide tener un texto con el nombre de la foto en un Tedit. Si no hay nombre muestra un MessageBox.
Al mostrar dicho mensaje la webcam congela la imagen y hasta que no pulse Aceptar no se descongela. Me ocurre con cualquier mensaje incluso con MessageDlg, etc.

El programa tiene dos paneles con dos Timage. Uno para la imagen de la webcam y otro para sacar una foto de la misma.


He probado otro ejemplo por la web que usa las librerías DirectX https://www.delphibasics.info/home/delphibasicsprojects/directxdelphiwebcamcaptureexample y ocurre igual. En avicap32 no me pasa.
He probado a poner Application.ProcessMessages antes de mostrar el Dialogo de mensaje; pero no funciona.
¿Me podéis sugerir algo?

alquimista
28-06-2022, 19:36:50
Solucionado.
Me respondo a mi mismo y por si le sirve a alguien.
Las unidades del truco VSample.pas y VFrames.pas son antiguas. Las he buscado por internet y en un GitHub aparecen versiones mejoradas que solucionan ese problema. las versiones antiguas del truco eran la 1.4 y 1.2 (actualizadas a la 1.6 y 1.22 respectivamente). Se necesita además una unidad más llamada UGDIPlus.pas. Lo he probado y ya no congela al mostrar mensajes típicos con MessageBox o similar.

ElKurgan
29-06-2022, 06:39:50
Gracias por compartir la solución

Saludos

Casimiro Notevi
29-06-2022, 10:55:13
Solucionado.
Me respondo a mi mismo y por si le sirve a alguien.
Las unidades del truco VSample.pas y VFrames.pas son antiguas. Las he buscado por internet y en un GitHub aparecen versiones mejoradas que solucionan ese problema. las versiones antiguas del truco eran la 1.4 y 1.2 (actualizadas a la 1.6 y 1.22 respectivamente). Se necesita además una unidad más llamada UGDIPlus.pas. Lo he probado y ya no congela al mostrar mensajes típicos con MessageBox o similar.
Pues eso sí estaría bien ponerlo en el hilo de "Trucos" sobre ese tema :)