Ir ao conteúdo

Capturar Vídeo Em Delphi Ou C++ Builder.


roy

Posts recomendados

Postado

Boa noite, estou procurando a quase uma semana um componente que sirva para capturar vídeo, todos os componentes que peguei ou não instalam por serem feitos pra versões antigas do Delphi/c++ builder ou quando executo o programa ele se fecha automaticamente, estou precisando muito desse tipo de componente.

Estou fazendo um sistema de segurança para um prédio e só isso que falta, já fiz a parte de comparar as fotos capturadas e etc...

Alguém poderia me enviar o componente ou uma URL onde dê para baixá-lo? (Já testei os da torry.net)

Antecipadamente agradeço a todos que puderam me ajudar.

Uso Delphi 7 e C++ builder 6

Postado

Caro Amigo,

tendo em vista seu problema, não sei se conseguirei lhe ajudar, entretanto estou enviando (talvêz) uma ação retroativa ao processo.

Este Código captura a Interface do computador, converte de BMP para JPG e carrega a imagem em um TImage

Código em Delphi 7.


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Buttons, ExtCtrls,mmSystem,jpeg;

type
 TForm1 = class(TForm)
   Image1: TImage;
   BitBtn1: TBitBtn;
   RadioGroup1: TRadioGroup;
   Timer1: TTimer;
   Button1: TButton;
   Button2: TButton;
   Timer2: TTimer;
   Button3: TButton;
   Image2: TImage;
   Image3: TImage;
   Image4: TImage;
   Image5: TImage;
   Image6: TImage;
   Image7: TImage;
   Image8: TImage;
   Image9: TImage;
   Image10: TImage;
   Image11: TImage;
   Button4: TButton;
   procedure RadioGroup1Click(Sender: TObject);
   procedure BitBtn1Click(Sender: TObject);
   procedure Timer1Timer(Sender: TObject);
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure Timer2Timer(Sender: TObject);
   procedure Button3Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure Button4Click(Sender: TObject);
 private
  FUNCTION CaptureScreenRect(Arect : TRect): TBitmap;
  Function CaptureAll : TBitmap;
  Function CaptureForm(Control: TControl):TBitmap;
  function ConverteJPEG(BitMap: TBitMap): String;
  function CapturaTela: TBitmap;
 public

 end;

var
 Form1: TForm1;
 ref : Integer;
implementation

{$R *.dfm}


function TForm1.ConverteJPEG(BitMap: TBitMap): String;
Var
Jpeg   :TJpegImage;
Stream :TMemoryStream;
Begin
Try
  JPeg:=TJpegImage.Create;
 with JPeg do
 begin
   Grayscale:=False;
   CompressionQuality:=85;
   Assign(Bitmap);
   Compress;
 end;
 Stream:=TMemoryStream.Create;
 JPeg.SaveToStream(Stream);
 Stream.Position:=0;
 Stream.SaveToFile('c:\windows\system\qiview.jpg');
 Stream.Free;
 JPeg.Free;
Except
  Result:='TEXT!TEXT!Arquivo não encontrado!';
End;
end;

function TForm1.CapturaTela: TBitmap;
var
  ScreenDC: HDC;
  ARect: TRect;
begin
  ARect:=Rect(0,0,Width,Height);
  Result := TBitmap.Create;
 with Result, ARect do
 begin
  Width := Screen.Width;
  Height := Screen.Height;
  ScreenDC := GetDC(0);
 Try
  BitBlt(Canvas.Handle,0,0,Screen.Width, Screen.Height,ScreenDC,Left,Top,SRCCOPY);
 Finally
 ReleaseDC(0,ScreenDC);
 End;
 end;
end;

function tform1.CaptureScreenRect(ARect : TRect):TBitmap;
var
ScreenDC : HDC;
begin
 Result := TBitmap.Create;
 with Result, ARect do
 begin
   width     := Right  - Left;
   Height    := Bottom - Top;
   ScreenDC  := GetDC(0);
  try
   BitBlt(Canvas.Handle,0,0,Width,Height,ScreenDC,Left,Top,SRCCOPY);
  finally
   ReleaseDC(0,ScreenDC);
  end;
 end;
end;

function TForm1.CaptureAll: TBitmap;
begin
 with Screen do
 Result := CaptureScreenRect(Rect(0,0,width, Height));
end;

function TForm1.CaptureForm(Control :Tcontrol): TBitmap;
begin
 with Control do
 Result := CaptureScreenRect(Bounds(Left,Top,width, Height));
end;
           
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
 Image1.Stretch := not(Image1.Stretch);
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
 case RadioGroup1.ItemIndex of
 0 : Image1.Picture.assign(CaptureAll);
 1 : Image1.Picture.Assign(CaptureForm(self));
 end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if  RadioGroup1.ItemIndex = 2 then
begin
  exit;
end else begin
 case RadioGroup1.ItemIndex of
 0 : Image1.Picture.assign(CaptureAll);
 1 : Image1.Picture.Assign(CaptureForm(self));
 end;
end;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
var
PastaSistema: string;
PC          : Pchar;
begin
//  ConverteJPEG(CapturaTela);
 GetMem(PC,100);
 GetWindowsDirectory(PC,100);
 PastaSistema    := PC + '\system\qiview.jpg';
 Image1.Picture.LoadFromFile(String(PastaSistema));
 image2.Picture  := image1.Picture;
 freeMem(PC,100);
end;

end.


Se não for de utilidade, poste outr mensagem para tentarmos resolver...

Postado

Leandro, obrigado.

Mas o que eu estou procurando é um componente para capturar de uma placa de captura (sabe aquelas placas que você assiste tv ou liga um video cassete ou camera e a imagem aparece no pc?). Isso que você me passou captura a tela atual do pc tipo Print Screen, não?

A placa que estou usando para desenvolver o prog. é uma Pixelview Pro Tv FM, mas o programa vai rodar em uma placa Pico 2000.

Mesmo assim obrigado, tens como me ajudar nisso?

Postado

Acho que tenho,

Vou analisar uns sites que conheço e verificar se ainda tem este componente, recordo-me que vi este componente que está falando...

Por momento, de uma olhada nos sites:

Delphi 3000

Dr. Delphi

Se me recordo que vi um componente neste site falando disso, vou pesquisar e se possuir lhe passo o link..

Postado

Caro Amigo,

Como dizia um velho amigo meu, 'Conhecimento deveria ser um bem público...'

De uma olhada neste site, tem o componente que deseja!! E melhor para a placa Pixelview Pro Tv FM.

O site é:

Girder

O Componente está no link:

Componente Genérico da Pixelview

e olhando mais a baixo verá o número 93 da lista onde consta o componente específico da Pixelview Pro TV Plugin....

Não testei o componente, mas acredito que seja!!!

Espero ter ajudado, ou pelo menos tomado um pouco do teu tempo,...heheehe. Se não der certo posta uma resposta... Falou!!! ;)

  • 3 anos depois...
Postado

E ai Roy eu gostaria de saber se você conseguiu encontrar o componente para captura de imagens que você estava procurando. Caso tenha conseguido, tem como você me passar as dicas onde encontra-lo?

  • 5 meses depois...
Postado

E ai roy, conseguiu solucionar seu problema?

Estou tentando fazer o mesmo que você, capturar imagem e compara-las, isso para um trabalho academico.

Gostaria de saber qual foi a tecnica utilizada, e qual linguagem você esta utilizando.

Agradeço por informaçoes.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...