Изменить разрешение видео с веб-камеры с помощью программы Delphi - PullRequest
2 голосов
/ 02 февраля 2012

Как изменить размер веб-камеры с (640x360) по умолчанию в VFrames на (160x120) в качестве нового по умолчанию.

Я использую this component найдено на this page.

Ответы [ 2 ]

3 голосов
/ 02 февраля 2012

В VFrames есть предопределенный метод

var
  cam:TVideoImage;
  camlist:TStringList;
  reslist:TStringList;
  vp:TVideoProperty;
begin

   camlist := TStringList.Create ;
   reslist :=TStringList.Create;

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

   cam.SetDisplayCanvas(PaintBox1.Canvas);

   cam.VideoStart(camlist.Strings[0])    ;

   // important 

   cam.GetListOfSupportedVideoSizes(reslist);
   ListBox1.Items := reslist;
   cam.SetResolutionByIndex(0);

   //specify your resolution by index using listbox index
   //this will not only lists resolutions but also other features available , so be careful when selecting the index
end;

убедитесь, что GetListOfSupportedVideoSizes и SetResolutionByIndex выполнены после начала воспроизведения видео

0 голосов
/ 02 февраля 2012

в этом ответе я использую растровое изображение.

это будет немного медленнее, чем предыдущий (но трудно заметить)

Мы собираемся получать изображение при каждом тике таймера (например, интервал = 100), присваивать его нашему полю изображения, а затем изменять наш размер, независимо от того, какое разрешение по умолчанию, оно получит изображение размера по умолчанию например: 640 * 480) и в поле изображения мы собираемся изменить размер.

uses
  ....
  VFrames;

var
 ....
  cam:TVideoImage;

implementation

 procedure TForm6.FormCreate(Sender: TObject);
 begin
  cam := TVideoImage.Create;

  image1.stretch := true ;
  image1.height := 120 ;
  image1.width := 160 ;

end;

 procedure TForm6.Timer1Timer(Sender: TObject);
 begin
   cam.GetBitmap(Image1.Picture.Bitmap);
 end;

 procedure TForm6.Button1Click(Sender: TObject);
 var
   camlist:TStringList;
 begin

   camlist := TStringList.Create ;

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

   cam.VideoStart(camlist.Strings[0])    ;

end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...