delphi Dspack 解析度

procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
begin
// 讀取系統中的視頻輸入設備
SysDev:= TSysDevEnum.Create(CLSID_VideoInputDeviceCategory);
if SysDev.CountFilters > 0 then
for i := 0 to SysDev.CountFilters - 1 do
begin
Listbox1.Items.Add(SysDev.Filters[i].FriendlyName)
end;
end;
procedure TForm1.ListBox1Click(Sender: TObject); //選擇攝像頭
begin
FilterGraph1.ClearGraph;
FilterGraph1.Active := false;
//設filter為所選視頻輸入設備
Filter1.BaseFilter.Moniker := SysDev.GetMoniker(Listbox1.ItemIndex);
FilterGraph1.Active := true;
// 打開所選的視頻輸入設備
with FilterGraph1 as ICaptureGraphBuilder2 do
// RenderStream(@PIN_CATEGORY_PREVIEW, nil, Filter1 as IBaseFilter, nil, VideoWindow1 as IbaseFilter);
RenderStream(@PIN_CATEGORY_PREVIEW, nil, Filter1 as IBaseFilter, SampleGrabber1 as IBaseFilter, VideoWindow1 as IbaseFilter);
// 顯示出來
FilterGraph1.Play;
end;
procedure TForm1.suiButton1Click(Sender: TObject); //拍照保存
var
ABitmap: TBitmap;
AJpgmap: TJPEGImage;
photo: string;
begin
photo :=label3.Caption+'-'+FormatDateTime('hh', Now)+FormatDateTime('nn', Now)+FormatDateTime('ss', Now);
photo :=label4.Caption+photo+'.jpg';
label5.Caption:=photo;
// photo:=ExtractFilePath(Application.ExeName)+'photo\'+photo+'.jpg';
ABitmap := TBitmap.Create;
AJpgmap := TJPEGImage.Create;
try
// SampleGrabber1.GetBitmap(ABitmap);
SampleGrabber1.GetBitmap(Image1.Picture.Bitmap);
// AJpgmap.Assign(ABitmap);
AJpgmap.Assign(Image1.Picture.Bitmap);
AJpgmap.SaveToFile(photo);
Image1.Picture.LoadFromFile(photo);
finally
ABitmap.Free;
AJpgmap.Free;
end;
end;
上面為程式的為部分代碼,攝像頭為2個,一個30W最高解析度為640X480,一個是100W HD最高解析度為1920X1080


不管我選擇哪一個攝像頭,拍照保存了圖片全部都是640X480

怎么設定為,拍照了時候為攝像頭的最高解析度 ,代碼要怎么寫,或者,可以自己選擇拍照解析度
uj5u.com熱心網友回復:
過來看一看,看有沒有大神幫看一下uj5u.com熱心網友回復:
過來看一看,看有沒有大神幫看一下uj5u.com熱心網友回復:
將Image中的影像,按新的解析度復制到別一個Image中,即可。我的代碼僅代參考。procedure TSeleteImageFrm.Button2Click(Sender: TObject);
var MyRect, NewRect: TRect;
Bmp,NewBmp: TBitmap;
s1,s2:string;
W,H,WW,WH:integer;
k,k1:double;
begin
TempName:=Edit1.text;
if (XX2=0) or (YY2=0) then
begin
XX1:=0;
YY1:=0;
XX2:=Image1.Picture.Graphic.Width;
YY2:=Image1.Picture.Graphic.Height;
end;
Bmp:=TBitmap.Create;
NewBmp:=TBitmap.Create;
MyRect := Rect(XX1,YY1,XX2,YY2);
NewRect := Rect(0,0,XX2-XX1, YY2-YY1);
Bmp.Width:=XX2-XX1;
Bmp.Height:=YY2-YY1;
Bmp.Canvas.CopyRect(NewRect,Image2.Canvas, MyRect);
case ComboBox1.ItemIndex of
0: ChangeAnyPixels(Bmp,NewBmp,100,133);
1: ChangeAnyPixels(Bmp,NewBmp,150,200);
2: ChangeAnyPixels(Bmp,NewBmp,200,266);
3: ChangeAnyPixels(Bmp,NewBmp,225,300);
4: ChangeAnyPixels(Bmp,NewBmp,300,400);
end;
NewBMP.SaveToFile(ImagePath+TempName+'.bmp');
Image1.Picture.Assign(BMP);
Image2.Picture.Assign(BMP);
ChangeImageSize;
XX2:=0;
YY2:=0;
Bmp.Free;
NewBmp.Free;
end;
僅供參考。
uj5u.com熱心網友回復:

這是程式界面。選擇解析度,保存即可。
uj5u.com熱心網友回復:
視頻 總有 www.pegasusimaging.com 怎么去掉uj5u.com熱心網友回復:
下載含全部原始碼的控制元件重新安裝DSPACK:
DSPACK v2.34 for Delphi7
http://download.csdn.net/detail/npkaida/9647422
DSPack for D10.1 Berlin
http://download.csdn.net/detail/npkaida/9647418
uj5u.com熱心網友回復:
謝謝你的回復,找到原因了,是CAPPRO.EXE 控制元件導致的,安裝時有幾個選項不選中就可以了。uj5u.com熱心網友回復:
@lyhoo163 請問你發的那個界面的DEMO在哪里下載啊uj5u.com熱心網友回復:
請問大家影像旋轉90度咋實作啊,謝謝轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/24124.html
上一篇:LaTeX中遇到這種如何處理
