unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, VfW, Clipbrd, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
AviPanel: TPanel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure capbmp;
public
{ Public declarations }
end;
var
Form1: TForm1;
m_hCapWnd:Hwnd;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
dwSize:Integer;
setBmp : BITMAPINFO ;
begin
try
m_hCapWnd := capCreateCaptureWindow('',
WS_CHILD or WS_VISIBLE,0,0,AviPanel.width,AviPanel.height,AviPanel.Handle,0);
//avipanel 就是你要顯示的視頻窗口的;可以是form ,panel等
//AviPanel.width就是顯示的寬度,AviPanel.height顯示的高度;
if(capDriverConnect(m_hCapWnd,0)) then
begin
// capOverlay(m_hCapWnd,true); //普通的攝像頭不能用overlay的方式 主意;
capPreviewRate(m_hCapWnd,30); //設置幀率爲30
capPreview(m_hCapWnd,true); // preview方式顯示
dwSize:=capGetVideoFormatSize(m_hCapWnd);
capGetVideoFormat(m_hCapWnd,@setBmp, dwSize);
setBmp.bmiHeader.biWidth:=352; //這個就是設置你捕捉圖片的大小了 寬度 :)
setBmp.bmiHeader.biHeight:=288; //這個就是設置你捕捉圖片的大小了 高度 :)
capSetVideoFormat(m_hCapWnd,@setBmp,dwSize);
end;
except
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin//定像
capbmp;
end;
procedure TForm1.capbmp;
begin
capEditCopy(m_hCapWnd); //把圖像拷到剪貼板
image1.Picture.Bitmap.LoadFromClipboardFormat(CF_BITMAP,Clipboard.GetAsHandle(CF_BITMAP), 0);
// 這時在image1裏面的就是你需要的圖片
end;
end.