软件频道>程序开发>JavaVBVCDelphiC/C++Web开发微软专栏移动数据库程序人生软件工程|Java 运行时监控
您现在的位置: 天极网 > 开发频道 > Visual C++编程实现摄像头视频捕捉
全文

Visual C++编程实现摄像头视频捕捉

2005-09-23 08:49作者:黄东出处:天极网责任编辑:方舟
  如何使用视频捕捉类CCaptureVideo

  构建CCaptureVideo类以后,使用就方便多了,我们在编程中只需要是要下面三个类成员函数就可以实现用摄像头进行视频捕捉:

  ①int EnumDevices(HWND hList); //hList是下拉列表框的句柄,本函数用于枚举当前系统安装的所有视频捕捉设备

  ②HRESULT Init(int iDeviceID,HWND hWnd);//iDeviceID是视频捕捉设备序号,hWnd是视频捕捉窗口的句柄

  ③void GrabOneFrame(BOOL bGrab);//调用GrabOneFrame(true)就可以捕获当前的静态图像并保存到硬盘上
  
  具体示例:用MFC AppWizard(exe)创建一个对话框应用程序,取名为ds,给对话框添加一个下拉列表框(IDC_COMBO1)、两个按钮(IDC_PHOTO、IDC_HAVEALOOK)和一个Picture控件(ID:IDC_STATIC_SCREEN,Type: Rectangle,Color:Gray)。

  1、使用向导添加成员变量

CStatic m_staticScreen; // IDC_STATIC_SCREEN
CComboBox m_ListCtrl; // IDC_COMBO1
CCaptureVideo m_cap;

  2、为BOOL CDsDlg::OnInitDialog()添加如下代码:

// TODO: Add extra initialization here
m_cap.EnumDevices (m_ListCtrl);
m_ListCtrl.SetCurSel (0);

  3、为确定按钮添加代码如下:

void CDsDlg::OnOK()
{
 //只需要四行代码就可以进行视频捕捉了
 UpdateData();
 HWND hWnd = m_staticScreen.GetSafeHwnd() ;
 HRESULT hr = m_cap.Init(m_ListCtrl.GetCurSel (),hWnd);
 GetDlgItem(IDOK)->EnableWindow(FALSE);
}

  4、如果希望捕捉静态图像,为照相按钮添加如下代码:

void CDsDlg::OnPhoto()
{
 m_cap.GrabOneFrame(true);
}

  运行程序时,选定摄像头后只需要按确定就可以了,实际效果如下图所示:


  结束语

  本文提供的视频捕捉类CcaptureVideo和示例,在Win2K + DirectX9 SDK + VC6 环境下调试通过。注意:编译时需要Strmiids.lib Quartz.lib两个库文件(DirectX9 SDK自带)。
共2页。 首页 上一页 1 2
相关搜索:
相关文章及软件
关注此文读者还看过
热门关注
特别推荐
关于我们|About us|网站律师|天极服务|电子杂志|RSS订阅|加入我们|网站地图
TMG
Copyright (C) 1999-2009 Chinabyte.com, All Rights Reserved 版权所有 天极网络
商务联系、网站内容、合作建议:010-82657868
版权声明 在线提交意见反馈 Powered by 天极内容管理平台CMS4i
经营性网站备案信息 网警备案 中国网站排名
天极传媒:天极网|比特网|IT专家网|IT商网|52PK游戏网|IT分众