Windows下摄像头采集驱动(DirectShow)

本文介绍了在Windows环境下,使用DirectShow进行摄像头采集的详细步骤,包括枚举设备、初始化GraphBuilder、创建Input与OutputFilter、设置SampleGrabber、配置回调函数以及开始视频捕获。同时,还涉及了如何处理视频数据格式和输出到指定窗口。
摘要由CSDN通过智能技术生成
  枚举摄像头设备(不论设备能否被使用都会被枚举出来):

int EnumDevices()

 int id = 0;
 
 //枚举视频扑捉设备
 ICreateDevEnum *pCreateDevEnum;
 HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER,IID_ICreateDevEnum, (void**)&pCreateDevEnum);
 if (hr != NOERROR)
  return -1;
 
 CComPtr<IEnumMoniker> pEm;
 hr = pCreateDevEnum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory,&pEm, 0);
 if (hr != NOERROR)
  return -1;
 
 pEm->Reset();

 ULONG cFetched;
 IMoniker *pM;
 
 while(hr = pEm->Next(1, &pM, &cFetched), hr==S_OK) 
 {
  IPropertyBag *pBag;
  hr = pM->BindToStorage(0, 0, IID_IPropertyBag, (void **)&pBag);
  if(SUCCEEDED(hr))
  {
   VARIANT var;
   var.vt = VT_BSTR;
   hr = pBag->Read(L"FriendlyName", &var, NULL); //you can get other info by first parame
   if (hr == NOERROR)
   { 

        id++;
        SysFreeString(var.bstrVal);
   }
   
   pBag->Release();
  }
  
  pM->Release();
 }
 
 return id;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值