Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Capturar imagenes con WebCam y Delphi 11 Alexandria (https://www.clubdelphi.com/foros/showthread.php?t=96663)

trex2000 03-04-2024 22:09:23

Capturar imagenes con WebCam y Delphi 11 Alexandria
 
Saludos a todos.

Tengo la problemática de no poder capturar imágenes desde una webcam y delphi 11 alexandria, he seguido varios ejemplos que me he encontrado en Internet pero al momento de volver a teclear o copiar el código en una aplicación nueva no funciona pero los ejemplos o demos si funcionan, el ultimo ejemplo y que me estoy basando en este momento es del Webcam con DirectX Avanzado que encontré aquí en Club Delphi pero al momento de compilar me marca un access violation, ya busque y puse las librerías VFrames.Pas y VSample.Pas que recomiendan pero aun persiste el error.

Alguien me podría ayudar para corregir este error?

De antemano muchas gracias.

newtron 04-04-2024 09:48:12

¿Has probado con lo que indica este link? Yo uso Delphi Berlin y funciona.


Saludos.

Neftali [Germán.Estévez] 04-04-2024 12:57:46

1 Archivos Adjunto(s)
Si estás usando VFrames.pas y VSample.pas con el siguiente código deberías poder capturar un frame sin problemas:


Inicializar el control:
Código Delphi [-]
  // inicializar
  cam := TVideoImage.Create;
  cam.GetListOfDevices(TStringList(lbCamList.Items));

Iniciar el video:


Código Delphi [-]
  // Seleccionar cámara
  cam.SetDisplayCanvas(pbVideo.Canvas);
  cam.VideoStart(lbCamList.Items[lbCamList.ItemIndex]);

Y capturar el frame:
Código Delphi [-]
  Randomize;
  // Tomar un snapShot
  var Bmp := TBitmap.Create;
  try
    cam.GetBitmap(bmp);
    imgFileName := TPath.GetTempPath + Random(9999).ToString + '_imagen.bmp';
    bmp.SaveToFile(imgFileName);
  finally
    bmp.Free;
  end;
  // Cargarlo de disco
  imgFrame.Picture.LoadFromFile(imgFileName);


A mi me funciona bien.



Te adjunto el proyecto. Está compilado con Delphi 12, pero debería compilar sin problemas con versiones anteriores.

trex2000 06-04-2024 06:00:24

Gracias por sus respuestas.

Probe el proyecto que me pusiste para descargar y probar Neftali y me sale el error:

"Incompatible types: PAnsiChar and PWideChar"

En la unidad uWebCam.

Código Delphi [-]
procedure WebcamList;
var
  x:cardinal;
  names: string;
  Descriptions: string;
begin
  for x := 0 to 9 do begin
    setlength(Names,256);
    setlength(Descriptions,256);
    if not capGetDriverDescriptionA(x,pchar(Names),256,pchar(Descriptions),256) then continue; //En esta linea marca el error.
    if length(Names) > 0 then
      FormMain.combobox1.Items.Add(inttostr(x)+' '+names);
    end;
end;

escafandra 06-04-2024 21:31:36

El código que expones creo que no está en lo que expuso Neftali.


Lo que tienes es un problema de tipos char. capGetDriverDescriptionA usa AnsiChar mientras que capGetDriverDescriptioW usa PWideChar (PCHAR para las versiones modernas de delphi)
Para que te compile debes cambiar por capGetDriverDescription o por capGetDriverDescriptionW
También puedes trabajarlo todo con AnsiChar y AnsiString usando la API capGetDriverDescriptioA





Saludos.

Neftali [Germán.Estévez] 08-04-2024 08:45:21

Cita:

Empezado por trex2000 (Mensaje 555247)
Probe el proyecto que me pusiste para descargar y probar Neftali y me sale el error:
"Incompatible types: PAnsiChar and PWideChar"


Yo he probado a compilarlo con Delphi 11.3 y me compila sin problemas.


La franja horaria es GMT +2. Ahora son las 21:34:06.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi