使用Delphi程序更改Webcam视频的分辨率

时间:2012-02-02 08:08:58

标签: delphi webcam

如何将网络摄像头的大小从({1}}的默认值(640x360)更改为(160x120)作为新的默认值。

我正在使用this component上的this page

2 个答案:

答案 0 :(得分:3)

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;

确保在视频开始播放后执行GetListOfSupportedVideoSizesSetResolutionByIndex

答案 1 :(得分:0)

在这个答案中我正在使用位图图像。

这会比之前略慢(但很难注意到)

我们将在每个计时器刻度(例如间隔= 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;