怎样动态寻找视频采集卡?等待中........ 我想编一个程序,运行后能够自动侦测现在是否安装采集卡,安装的是什么采集卡,然后利用这块采集卡进行采集。也就是说想我的程序能够使用任何一块采集卡?可以吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 采集卡在windows系统中,现在大概有两个标准。一个就是vfw 一个就是directshow. 市面上99%的采集卡都支持这两种标准。 所以你要想你的程序能够使用绝大部分的采集卡是没有问题的。如果你要求不高,仅仅是要监控,抓图等基本操作 我建议你用vfw 。几行代码就搞定。 下面是例子; 下面就是例子:(需要头文件vfw,c++builder里面已经自带,delphi 可以在网上下载; 如果 你认为麻烦, 你可以自己对cap32.dll申明这几个函数,如果需要 我可以email给你);//其它的功能这里就不一一阐述 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;在网上下在一个vfw.pas 就是对微软video for windows的申明文件。 收索一下 很多地方有 如果需要 我可以email给你。。 如果你用 directshow 那么我建议你用dspack。 同样 很多地方有下载。如果需要 同样也可以email给你 blackbook(油条) 不行呀!我的计算机上安装了天敏卡,计算机提示“在使用另一个视频应用程序,如DVD、视频会议、视频编辑、TV观测仪或Windows德WebTV时,您不能使用这个设备。”但是我没有用这些东西呀?!怎么回事??? 读取blob字段时,如何显示读取进度? 问什么 自己找到的端口就是比别人找到的少? 问一个简单的问题! 高手请进(关于继承与重载类方法的问题) dephi7中的TClientSocket和TServerSocket哪去了 关于"无法为更新定位行。一些值可能在最后一次读取后已更改" 讨论一下Delphi中AS的用法? 一个有点难度的问题,但有多难就见仁见智了 请问一个关于数据库的问题???????????????????????????? messagebox问题,急救!!!!!! 数据联合查询问题 怎样让MDI窗体中子窗体的标题不显示。
所以你要想你的程序能够使用绝大部分的采集卡是没有问题的。如果你要求不高,仅仅是要监控,抓图等基本操作 我建议你用vfw 。几行代码就搞定。 下面是例子;
下面就是例子:(需要头文件vfw,c++builder里面已经自带,delphi 可以在网上下载;
如果 你认为麻烦, 你可以自己对cap32.dll申明这几个函数,如果需要 我可以email给你);
//其它的功能这里就不一一阐述
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;在网上下在一个vfw.pas 就是对微软video for windows的申明文件。
收索一下 很多地方有 如果需要 我可以email给你。。
如果你用 directshow 那么我建议你用dspack。 同样 很多地方有下载。
如果需要 同样也可以email给你
不行呀!
我的计算机上安装了天敏卡,计算机提示“在使用另一个视频应用程序,如DVD、视频会议、视频编辑、TV观测仪或Windows德WebTV时,您不能使用这个设备。”
但是我没有用这些东西呀?!
怎么回事???