2014-09-27 7 views
-1

Мне нужно найти надежный способ с Delphi XE сделать снимок с помощью веб-камеры и сохранить его как файл изображения. Есть много сообщений об этом, но никто из них не работает для меня. Либо код не будет компилироваться, либо изображение не будет создано. Самый лучший из них - this one с использованием VFrames. Он отлично отображает видео в веб-камере, но когда я пытаюсь сохранить снимок в формате BMP, используя код ниже, изображение пустое. Я попытался присвоить его TImage с тем же результатом. Кто-нибудь знает, почему это происходит или есть лучший способ сделать это?Снимки веб-камеры Delphi

procedure TForm1.Button2Click(Sender: TObject); 
var 
    cam:TVideoImage; 
    strlst:TStringList; 
    BMP:TBitmap; 
begin 
    strlst := TStringList.Create ; 
    cam :=TVideoImage.Create; 
    cam.GetListOfDevices(strlst); 
    cam.VideoStart(strlst.Strings[0]); //specify a cam by number 
    //get snapshot 
    BMP := TBitmap.Create; 
    cam.GetBitmap(BMP); 
    BMP.SaveToFile('C:\test.bmp'); 
    cam.VideoStop; 
    BMP.Free; 
end; 
+0

Вы попробовали [это] (http://stackoverflow.com/a/19726811/800214)? – whosrdaddy

+0

Да, это приводит к пустой белой BMP. – user3640611

+1

Дубликат определяется вопросом, так как я понял проблему с принятым ответом, я добавил там новую. – bummi

ответ

0

Я думаю, что вы должны иметь выглядеть DirectX, и я думаю, вы должны посмотреть на этом сайте:

http://www.delphibasics.info/home/delphibasicsprojects/directxdelphiwebcamcaptureexample

Эта страница предлагает отличный способ использования веб-камер под окнами, его очень надежно и позволяет установить любое свойство кулачка. Его все открытые, простые в использовании и основанные на родных Windows DirectX-библиотеках.

Используйте этот пример:

http://www.delphibasics.info/home/delphibasicsprojects/directxdelphiwebcamcaptureexample/DirectXDelphiWebcamCapture.rar

Это преобразование DiRectX Паскаля сделал [email protected]

добавить VSample.pas и VFrames.pas к вашему проекту

uses VFrames; 

procedure TForm6.Button1Click(Sender: TObject); 

var 
    cam:TVideoImage; 
    strlst:TStringList; 
begin  
    strlst := TStringList.Create ; 

    cam := TVideoImage.Create; 
    cam.GetListOfDevices(strlst); 

    cam.SetDisplayCanvas(PaintBox1.Canvas); 
    cam.VideoStart(strlst.Strings[0]) ;//specify your cam by number 
end; 

Или вы можете взглянуть на это: http://sourceforge.net/projects/webcam-cap/ использует чистые API-вызовы для AVICAP32.DLL

+2

Я сомневаюсь, что delphibasics может обеспечить что-нибудь надежное ... –

+0

Я уже пробовал этот код VFrames. Включение кода моментального снимка в первое демо теперь дает мне 0 байт bmp вместо чистого белого BMP. Когда я пытаюсь объединить код проекта sourceforge, чтобы создать только один jpg, я получаю 0-байтовый файл изображения. – user3640611

+0

Затем попробуйте другой пример –

Смежные вопросы