Putain ! Il est encore planté ce bordel
galera estou implementado um cadastro com foto no meu TCC onde nele
vai ter um local para tirar foto pela web can
com o componente Tcamera indicado aqui no forum
blz implementei no meu programa mas
quando inicia o form da esse erro
Putain ! Il est encore planté ce bordel
agluem sabe o que é ou se já tiver o codigo pronto me ajuda
é que o fila da gaita do meu cliente pediu
ESSE É O CÓDIGO DE TIRAR FOTO
procedure TFrmCapFoto.sbClick(Sender: TObject);
var
SR: TSearchRec;
I: integer;
begin
Camera1.FichierImage := dir+'\'+nn.Text+'.bmp';
Camera1.CaptureImageDisque;
BmpToJpg(dir+'\'+nn.Text);
img.Picture.LoadFromFile(dir+'\'+nn.Text+'.jpeg');
img.Picture.SaveToFile(dir+'\'+nn.Text+'.jpeg');
cco.Text := '1';
I := FindFirst(dir+'\*.bmp', faAnyFile, SR);
while I = 0 do begin if (SR.Attr and faDirectory) <> faDirectory then
if not DeleteFile(dir+'\' + SR.Name) then ShowMessage('Não foi possível excluir '+dir+'\' + SR.Name);
I := FindNext(SR);
end;
end;
vai ter um local para tirar foto pela web can
com o componente Tcamera indicado aqui no forum
blz implementei no meu programa mas
quando inicia o form da esse erro
Putain ! Il est encore planté ce bordel
agluem sabe o que é ou se já tiver o codigo pronto me ajuda
é que o fila da gaita do meu cliente pediu
ESSE É O CÓDIGO DE TIRAR FOTO
procedure TFrmCapFoto.sbClick(Sender: TObject);
var
SR: TSearchRec;
I: integer;
begin
Camera1.FichierImage := dir+'\'+nn.Text+'.bmp';
Camera1.CaptureImageDisque;
BmpToJpg(dir+'\'+nn.Text);
img.Picture.LoadFromFile(dir+'\'+nn.Text+'.jpeg');
img.Picture.SaveToFile(dir+'\'+nn.Text+'.jpeg');
cco.Text := '1';
I := FindFirst(dir+'\*.bmp', faAnyFile, SR);
while I = 0 do begin if (SR.Attr and faDirectory) <> faDirectory then
if not DeleteFile(dir+'\' + SR.Name) then ShowMessage('Não foi possível excluir '+dir+'\' + SR.Name);
I := FindNext(SR);
end;
end;
Jose Silva
Curtidas 0
Melhor post
Cauê Nishijima
24/04/2014
Quando utilizei o TCamera também enfrentei o mesmo problema, e pesquisando na internet utilizei o código a seguir que usa DirectX e que resolveu meu problema.
http://www.delphibasics.info/home/delphibasicsprojects/directxdelphiwebcamcaptureexample/DirectXDelphiWebcamCapture.rar?attredirects=0
http://www.delphibasics.info/home/delphibasicsprojects/directxdelphiwebcamcaptureexample/DirectXDelphiWebcamCapture.rar?attredirects=0
GOSTEI 1
Mais Respostas
Erfelipe
24/04/2014
Quando utilizei o TCamera também enfrentei o mesmo problema, e pesquisando na internet utilizei o código a seguir que usa DirectX e que resolveu meu problema.
http://www.delphibasics.info/home/delphibasicsprojects/directxdelphiwebcamcaptureexample/DirectXDelphiWebcamCapture.rar?attredirects=0
http://www.delphibasics.info/home/delphibasicsprojects/directxdelphiwebcamcaptureexample/DirectXDelphiWebcamCapture.rar?attredirects=0
Cauê,
Sua dica foi valiosa. Realmente este fonte não dá problema porque deve fazer chamadas do DirectX. O TCamera funciona bem uma vez, depois ele dá esse problema da mensagem em francês.
Agora, preciso apenas de tirar uma foto e recuperar o JPEG. Você alterou o fonte? Dei uma olhada lá e não vi "onde" pegar a imagem. Se você fez um código para capturar uma imagem, poderia disponibilizar aqui?
Obrigado.
GOSTEI 0
Cauê Nishijima
24/04/2014
Olá erfelipe, posso sim, primeiramente você precisa recuperar os Devices da WebCam, para isso populei um ComboBox com as webcams que possui na máquina:
onde DevicesList é uma TStringList e fVideoImage é um TVideoImage
Ai você pode colocar um TImage e um botão para iniciar a captura:
E um outro botão pra capturar a foto:
Acho que da pra usar Stream nesse código anterior, mas não me lembro porque enfrentei alguma dificuldade e resolvi fazer desse jeito.
Essa é a codificação básica pra se utilizar o componente, porém no meu código fiz umas "frescuras" a mais, só pra deixar mais bonito, como utilizar um único botão pra iniciar a webcam e tirar a foto, a opção de além de tirar uma foto escolher uma já existente, ter uma imagem padrão
[img]http://arquivo.devmedia.com.br/forum/imagem/276180-20140529-083507.png[/img]
Os botões azuis em cima da foto somem e aparecem de acordo com a posição do mouse e se possui ou não uma foto.
Espero que tenha ajudado um pouco, mas qualquer coisa é só perguntar
DevicesList := TStringList.Create; fVideoImage.GetListOfDevices(DevicesList); cbbDevices.Items := DevicesList; DevicesList.Free;
onde DevicesList é uma TStringList e fVideoImage é um TVideoImage
Ai você pode colocar um TImage e um botão para iniciar a captura:
procedure TfrmWebCam.iniciarCaptura; var camdevice: string; begin camdevice := Trim(cbbDevices.Items.Strings[cbbDevices.ItemIndex]); fVideoBitmap := TBitmap.Create; fVideoImage := TVideoImage.Create; fVideoImage.OnNewVideoFrame := OnNewVideoCanvas; fVideoImage.VideoStart(camdevice); fVideoImage.GetBitmap(fVideoBitmap); img1.Picture.Bitmap.Assign(fVideoBitmap); btnCancelarCaptura.Enabled := True; end; procedure TfrmWebCam.OnNewVideoCanvas(Sender: TObject; Width, Height: Integer; DataPtr: Pointer); begin fVideoImage.GetBitmap(fVideoBitmap); img1.Picture.Bitmap.Canvas.Draw(0, 0, fVideoBitmap); end;
E um outro botão pra capturar a foto:
procedure TfrmWebCam.tirarFoto; var MyJPEG: TJPEGImage; begin MyJPEG := TJPEGImage.Create; try MyJPEG.CompressionQuality := 65; fVideoImage.VideoStop; fVideoBitmap.SaveToFile('X'); MyJPEG.Assign(Utils.BmpToJpeg('X')); img1.Picture.Assign(MyJPEG); finally FreeAndNil(fVideoBitmap); FreeAndNil(fVideoImage); MyJPEG.Free; DeleteFile('X'); end; end;
Acho que da pra usar Stream nesse código anterior, mas não me lembro porque enfrentei alguma dificuldade e resolvi fazer desse jeito.
Essa é a codificação básica pra se utilizar o componente, porém no meu código fiz umas "frescuras" a mais, só pra deixar mais bonito, como utilizar um único botão pra iniciar a webcam e tirar a foto, a opção de além de tirar uma foto escolher uma já existente, ter uma imagem padrão
[img]http://arquivo.devmedia.com.br/forum/imagem/276180-20140529-083507.png[/img]
Os botões azuis em cima da foto somem e aparecem de acordo com a posição do mouse e se possui ou não uma foto.
Espero que tenha ajudado um pouco, mas qualquer coisa é só perguntar
GOSTEI 1
Erfelipe
24/04/2014
Valeu demais Cauê!
Fui atrás da lib e encontrei estes exemplos também: http://www.delphibasics.info/home/delphibasicsprojects/directxdelphiwebcamcaptureexample
Sua dica foi fora de série.
Obrigado.
Fui atrás da lib e encontrei estes exemplos também: http://www.delphibasics.info/home/delphibasicsprojects/directxdelphiwebcamcaptureexample
Sua dica foi fora de série.
Obrigado.
Olá erfelipe, posso sim, primeiramente você precisa recuperar os Devices da WebCam, para isso populei um ComboBox com as webcams que possui na máquina:
onde DevicesList é uma TStringList e fVideoImage é um TVideoImage
Ai você pode colocar um TImage e um botão para iniciar a captura:
E um outro botão pra capturar a foto:
Acho que da pra usar Stream nesse código anterior, mas não me lembro porque enfrentei alguma dificuldade e resolvi fazer desse jeito.
Essa é a codificação básica pra se utilizar o componente, porém no meu código fiz umas "frescuras" a mais, só pra deixar mais bonito, como utilizar um único botão pra iniciar a webcam e tirar a foto, a opção de além de tirar uma foto escolher uma já existente, ter uma imagem padrão
[img]http://arquivo.devmedia.com.br/forum/imagem/276180-20140529-083507.png[/img]
Os botões azuis em cima da foto somem e aparecem de acordo com a posição do mouse e se possui ou não uma foto.
Espero que tenha ajudado um pouco, mas qualquer coisa é só perguntar
DevicesList := TStringList.Create; fVideoImage.GetListOfDevices(DevicesList); cbbDevices.Items := DevicesList; DevicesList.Free;
onde DevicesList é uma TStringList e fVideoImage é um TVideoImage
Ai você pode colocar um TImage e um botão para iniciar a captura:
procedure TfrmWebCam.iniciarCaptura; var camdevice: string; begin camdevice := Trim(cbbDevices.Items.Strings[cbbDevices.ItemIndex]); fVideoBitmap := TBitmap.Create; fVideoImage := TVideoImage.Create; fVideoImage.OnNewVideoFrame := OnNewVideoCanvas; fVideoImage.VideoStart(camdevice); fVideoImage.GetBitmap(fVideoBitmap); img1.Picture.Bitmap.Assign(fVideoBitmap); btnCancelarCaptura.Enabled := True; end; procedure TfrmWebCam.OnNewVideoCanvas(Sender: TObject; Width, Height: Integer; DataPtr: Pointer); begin fVideoImage.GetBitmap(fVideoBitmap); img1.Picture.Bitmap.Canvas.Draw(0, 0, fVideoBitmap); end;
E um outro botão pra capturar a foto:
procedure TfrmWebCam.tirarFoto; var MyJPEG: TJPEGImage; begin MyJPEG := TJPEGImage.Create; try MyJPEG.CompressionQuality := 65; fVideoImage.VideoStop; fVideoBitmap.SaveToFile('X'); MyJPEG.Assign(Utils.BmpToJpeg('X')); img1.Picture.Assign(MyJPEG); finally FreeAndNil(fVideoBitmap); FreeAndNil(fVideoImage); MyJPEG.Free; DeleteFile('X'); end; end;
Acho que da pra usar Stream nesse código anterior, mas não me lembro porque enfrentei alguma dificuldade e resolvi fazer desse jeito.
Essa é a codificação básica pra se utilizar o componente, porém no meu código fiz umas "frescuras" a mais, só pra deixar mais bonito, como utilizar um único botão pra iniciar a webcam e tirar a foto, a opção de além de tirar uma foto escolher uma já existente, ter uma imagem padrão
[img]http://arquivo.devmedia.com.br/forum/imagem/276180-20140529-083507.png[/img]
Os botões azuis em cima da foto somem e aparecem de acordo com a posição do mouse e se possui ou não uma foto.
Espero que tenha ajudado um pouco, mas qualquer coisa é só perguntar
GOSTEI 0
Adriano Wolff
24/04/2014
Boa noite caue...será que vc poderia me dizer qual o tipo desta variável: fVideoImage.GetListOfDevices(DevicesList); [Error] Unit1.pas(32): Undeclared identifier: 'fVideoImage'
Obrigado amigo, até logo.
Obrigado amigo, até logo.
Olá erfelipe, posso sim, primeiramente você precisa recuperar os Devices da WebCam, para isso populei um ComboBox com as webcams que possui na máquina:
onde DevicesList é uma TStringList e fVideoImage é um TVideoImage
Ai você pode colocar um TImage e um botão para iniciar a captura:
E um outro botão pra capturar a foto:
Acho que da pra usar Stream nesse código anterior, mas não me lembro porque enfrentei alguma dificuldade e resolvi fazer desse jeito.
Essa é a codificação básica pra se utilizar o componente, porém no meu código fiz umas "frescuras" a mais, só pra deixar mais bonito, como utilizar um único botão pra iniciar a webcam e tirar a foto, a opção de além de tirar uma foto escolher uma já existente, ter uma imagem padrão
[img]http://arquivo.devmedia.com.br/forum/imagem/276180-20140529-083507.png[/img]
Os botões azuis em cima da foto somem e aparecem de acordo com a posição do mouse e se possui ou não uma foto.
Espero que tenha ajudado um pouco, mas qualquer coisa é só perguntar
DevicesList := TStringList.Create; fVideoImage.GetListOfDevices(DevicesList); cbbDevices.Items := DevicesList; DevicesList.Free;
onde DevicesList é uma TStringList e fVideoImage é um TVideoImage
Ai você pode colocar um TImage e um botão para iniciar a captura:
procedure TfrmWebCam.iniciarCaptura; var camdevice: string; begin camdevice := Trim(cbbDevices.Items.Strings[cbbDevices.ItemIndex]); fVideoBitmap := TBitmap.Create; fVideoImage := TVideoImage.Create; fVideoImage.OnNewVideoFrame := OnNewVideoCanvas; fVideoImage.VideoStart(camdevice); fVideoImage.GetBitmap(fVideoBitmap); img1.Picture.Bitmap.Assign(fVideoBitmap); btnCancelarCaptura.Enabled := True; end; procedure TfrmWebCam.OnNewVideoCanvas(Sender: TObject; Width, Height: Integer; DataPtr: Pointer); begin fVideoImage.GetBitmap(fVideoBitmap); img1.Picture.Bitmap.Canvas.Draw(0, 0, fVideoBitmap); end;
E um outro botão pra capturar a foto:
procedure TfrmWebCam.tirarFoto; var MyJPEG: TJPEGImage; begin MyJPEG := TJPEGImage.Create; try MyJPEG.CompressionQuality := 65; fVideoImage.VideoStop; fVideoBitmap.SaveToFile('X'); MyJPEG.Assign(Utils.BmpToJpeg('X')); img1.Picture.Assign(MyJPEG); finally FreeAndNil(fVideoBitmap); FreeAndNil(fVideoImage); MyJPEG.Free; DeleteFile('X'); end; end;
Acho que da pra usar Stream nesse código anterior, mas não me lembro porque enfrentei alguma dificuldade e resolvi fazer desse jeito.
Essa é a codificação básica pra se utilizar o componente, porém no meu código fiz umas "frescuras" a mais, só pra deixar mais bonito, como utilizar um único botão pra iniciar a webcam e tirar a foto, a opção de além de tirar uma foto escolher uma já existente, ter uma imagem padrão
[img]http://arquivo.devmedia.com.br/forum/imagem/276180-20140529-083507.png[/img]
Os botões azuis em cima da foto somem e aparecem de acordo com a posição do mouse e se possui ou não uma foto.
Espero que tenha ajudado um pouco, mas qualquer coisa é só perguntar
GOSTEI 0
Cauê Nishijima
24/04/2014
Ola Adriano, desculpe a demora, tenho andado muito ocupado com um projeto.
Então pelo erro que deu parece que vc não declarou a variável fVideoImage....que é do tipo TVideoImage
Só declarar na sessão private...e depois instanciar normal no método iniciarCaptura.
Qualquer dúvida posta ai.
Então pelo erro que deu parece que vc não declarou a variável fVideoImage....que é do tipo TVideoImage
Só declarar na sessão private...e depois instanciar normal no método iniciarCaptura.
Qualquer dúvida posta ai.
GOSTEI 0