如何实现USB摄像头视频图像捕获(200分)

  • 主题发起人 主题发起人 qingyei
  • 开始时间 开始时间
Q

qingyei

Unregistered / Unconfirmed
GUEST, unregistred user!
大蛱们:
在下先行给大家行个礼!
我现在做一个系统,数据库部分基本做好了,
但有个模块是要用到两个USB摄像头作视频捕捉,
要求是实现两个画面显示,请问各位大蛱,谁有这
样的控件?以及如何用?
 
如果有好的控件,我加100分;如果有源码,再加100分。
 
呵呵,有的话我也一份
 
有的话我也一份
 
ActiveX不是已经提供了对摄影头和扫描仪的支持了吗(前提是你必须已安装了以上两设备)?
仔细找找Delphi中的菜单项吧。
 
loensu:
这个构件我用过了,可能是我不懂用吧,构件的界面太不好了,我能不能
改为自己想要的界面,比如显示在Panel上,行不行?
 
我也急需这方面的资料,哪位大侠能救救命?????
 
真的没有人难答吗?我也想知道这个问题!!!
 
大侠闪快来,有人答,就给我也来一份,我也太需要这个答案了
 
以前我用视频卡加摄像头成功过,用的是VFW(Video For Windows),效果还可以,估计用USB的也差不多。
你可以在MSDN中找找相应的资料。VFW现在已经捆绑在WIN里面了,你不用任何控件,只用API就可以搞定。
 
我也建议用VFW
Vfw 是对cap32.dll的声明
具体实现
1.用Createcapwindow生成视频窗口
2.通过测试连接,获得视频设备列表
3.连接视频设备,
4.设置桢率
5.将捕捉图像复制到CLIPER
6.从CLIPER获得图像
7.查wm_cap_..消息(vfw的基础实现)
我也在使用USB
有一个Ocx控件CAPWnd.ocx
答案我始终没有用对
video fly 还是创新的网站上?
在cn.YAhoo.com 视频捕捉
 
我现在正在开发相关产品,其实各种视频卡或USB头都带有驱动程序,可以使用
CAP32.DLL中的定义,在一个隐含窗口播放,然后用COPYRECT就可以放置到任何
一个有CANVAS的控件中。注意闪烁问题。
 
大侠们:
能不能给我一些学习资料,
我对这些不太懂,谢谢大家的帮助!!!
 
一个C++的例子:
BOOL CCapWndDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetIcon(m_hIcon, TRUE);
SetIcon(m_hIcon, FALSE);
m_bInit = FALSE;
CWnd * pWnd = AfxGetMainWnd()->GetDlgItem(IDC_VIDEO);
CRect rect ;
pWnd->GetWindowRect(&rect);//得到窗口大小
// 设置预视窗口
m_hCapWnd = capCreateCaptureWindow((LPTSTR)TEXT("Capture Test"), // 标题
WS_CHILD | WS_VISIBLE
| WS_EX_CLIENTEDGE
| WS_EX_DLGMODALFRAME, // 风格
0, 0, rect.Width(), rect.Width(), // 大小
pWnd->GetSafeHwnd(), // 窗口句柄
(int) 0);
// 窗口的ID号
ASSERT(m_hCapWnd);
// 连接驱动器
if(capDriverConnect(m_hCapWnd, 0)) // 连接第0号驱动器
{
m_bInit = TRUE;
// 得到驱动器的性能
capDriverGetCaps(m_hCapWnd, &m_CapDrvCap, sizeof(CAPDRIVERCAPS));
// 是否初始化成功
if(m_CapDrvCap.fCaptureInitialized)
{
// 得到驱动器状态
capGetStatus(m_hCapWnd ,&m_CapStatus, sizeof(m_CapStatus));
// 设置预视帧率
capPreviewRate(m_hCapWnd, 30);
// 设置为预视方式
capPreview(m_hCapWnd, TRUE);
}
else
{// 初始化未成功
AfxMessageBox("Driver not initialized!");
AfxGetMainWnd()->PostMessage(WM_CLOSE);
}
}
else
{ // 未能连接到驱动器
AfxMessageBox("Conncet to driver Fail!");
AfxGetMainWnd()->PostMessage(WM_CLOSE);
}
// 设置捕捉文件
m_CapFileName = "C://Capture.avi";
capFileSetCaptureFile(m_hCapWnd, m_CapFileName.GetBuffer(255));
return TRUE;
}
 
查已答问题,贴过原程序和例子。
 
黄豆:
我分析一下,谢谢你!!
 
接受答案。
 
后退
顶部