本人用下方法希望从摄像头中获取视频,并希望能从中截取图像!结果以失败告终,请高手指点迷经:)
本人查明得原因是,capDriverConnect(m_hCapWnd,0)) 返回0,所以没有执行if中得代码!请问还有其他什么办法能够从摄像头中获取视频??
急!急!急!急!急!急!急!急!急!
m_hCapWnd:Hwnd;procedure TForm1.create(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.capbmp;
begin
capEditCopy(m_hCapWnd); //把图像拷到剪贴板
Image1.picture.bitBmp.LoadFromClipboardFormat(CF_BITMAP,Clipboard.GetAsHandle(CF_BITMAP), 0);
// 这时在image1里面的就是你需要的图片;
end;procedure TForm1.close(Sender: TObject; var Action: TCloseAction);// 视频扑获处理
begin
capDriverDisconnect(m_hCapWnd);// vfw 里面的标准函数
end;
本人查明得原因是,capDriverConnect(m_hCapWnd,0)) 返回0,所以没有执行if中得代码!请问还有其他什么办法能够从摄像头中获取视频??
急!急!急!急!急!急!急!急!急!
m_hCapWnd:Hwnd;procedure TForm1.create(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.capbmp;
begin
capEditCopy(m_hCapWnd); //把图像拷到剪贴板
Image1.picture.bitBmp.LoadFromClipboardFormat(CF_BITMAP,Clipboard.GetAsHandle(CF_BITMAP), 0);
// 这时在image1里面的就是你需要的图片;
end;procedure TForm1.close(Sender: TObject; var Action: TCloseAction);// 视频扑获处理
begin
capDriverDisconnect(m_hCapWnd);// vfw 里面的标准函数
end;
关键字:video avi cap 摄像头 视频 vfw
http://www.delphibox.com/article.asp?articleid=272标 题:MTPlay V1.0 摄像头视频捕捉程序
关键字:MTPlay V1.0 摄像头 视频捕捉 抓图 录像 字幕 DSPack
关键字:video avi cap 摄像头 视频 vfw
http://www.delphibox.com/article.asp?articleid=272标 题:MTPlay V1.0 摄像头视频捕捉程序
关键字:MTPlay V1.0 摄像头 视频捕捉 抓图 录像 字幕 DSPack
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls,AviCap;type
TForm1 = class(TForm)
avipanel: TPanel;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation
function capCreateCaptureWindowA(lpszWindowName : PCHAR;
dwStyle : longint;
x : integer;
y : integer;
nWidth : integer;
nHeight : integer;
ParentWin : HWND;
nId : integer): HWND;
STDCALL EXTERNAL 'AVICAP32.DLL';
{$R *.DFM}const WM_CAP_START = WM_USER;
const WM_CAP_STOP = WM_CAP_START + 68;
const WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10;
const WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11;
const WM_CAP_SAVEDIB = WM_CAP_START + 25;
const WM_CAP_GRAB_FRAME = WM_CAP_START + 60;
const WM_CAP_SEQUENCE = WM_CAP_START + 62;
const WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20;
const WM_CAP_SEQUENCE_NOFILE =WM_CAP_START+ 63 ;
const WM_CAP_SET_OVERLAY =WM_CAP_START+ 51 ;
const WM_CAP_SET_PREVIEW =WM_CAP_START+ 50 ;
const WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START +6;
const WM_CAP_SET_CALLBACK_ERROR=WM_CAP_START +2;
const WM_CAP_SET_CALLBACK_STATUSA= WM_CAP_START +3;
const WM_CAP_SET_CALLBACK_FRAME= WM_CAP_START +5;
const WM_CAP_SET_SCALE=WM_CAP_START+ 53 ;
const WM_CAP_SET_PREVIEWRATE=WM_CAP_START+ 52 ;
const WM_CAP_DLG_VIDEOCOMPRESSION=(WM_CAP_START+ 46);procedure TForm1.FormCreate(Sender: TObject);
var
dwSize:Integer;
setBmp : BITMAPINFO ;
m_hcapwnd:word;
begin
try
m_hCapWnd:=capCreateCaptureWindowA('',
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))<>0 then
begin
// capOverlay(m_hCapWnd,true); //普通的摄像头不能用overlay的方式 主意;
capPreviewRate(m_hCapWnd,30); //设置帧率为30
capPreview(m_hCapWnd,1); // 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;
end.
模 块 功 能
AVICAP.DLL 包含执行视频捕获的函数,它给AVI文件的I/O处理和视频、音频设备驱动程序提供一个高级接口
MSVIDEO.DLL 包含一套特殊的DrawDib函数,用来处理屏幕上的视频操作
MCIAVI.DRV 包括对VFW的MCI命令解释器的驱动程序
AVIFILE.DLL 包含由标准多媒体I/O(mmio)函数提供的更高的命令,用来访问.AVI文件
ICM 压缩管理器,用于管理的视频压缩/解压缩的编译码器(Codec)
ACM 音频压缩管理器,提供与ICM相似的服务,适用于波形音频