CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  硬件/系统

急求在VC里头获取摄像头名字的方法.

楼主fsweiwei(令狐上官冲)2006-03-20 13:51:06 在 VC/MFC / 硬件/系统 提问

我的摄像头名字是:"USB   PC   Camera   301P"        
  如何在程序里头获取?  
  我查MSDN找到这个函数:     capGetDriverDescription   ,但是获得的是摄像头驱动的名字.  
  我弄了好久了,都没找到方法.求求各位做过摄像头程序的大哥指点一下迷津.  
               
  急! 问题点数:100、回复次数:9Top

1 楼fsweiwei(令狐上官冲)回复于 2006-03-20 13:52:24 得分 0

在线等.Top

2 楼tyong(伊面)回复于 2006-03-20 14:36:25 得分 0

DirectShow就很容易得到Top

3 楼tyong(伊面)回复于 2006-03-20 14:41:42 得分 98

//   Create   the   System   Device   Enumerator.  
  HRESULT   hr;  
  ICreateDevEnum   *pSysDevEnum   =   NULL;  
  hr   =   CoCreateInstance(CLSID_SystemDeviceEnum,   NULL,   CLSCTX_INPROC_SERVER,  
          IID_ICreateDevEnum,   (void   **)&pSysDevEnum);  
  if   (FAILED(hr))  
  {  
          return   hr;  
  }  
   
  IEnumMoniker   *pEnumCat   =   NULL;  
  hr=pSysDevEnum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory,   &pEnumCat,   0);  
   
  if   (hr   ==   S_OK)    
  {  
          //   Enumerate   the   monikers.  
          IMoniker   *pMoniker   =   NULL;  
          ULONG   cFetched;  
          while(pEnumCat->Next(1,   &pMoniker,   &cFetched)   ==   S_OK)  
          {  
                  IPropertyBag   *pPropBag;  
                  hr   =   pMoniker->BindToStorage(0,   0,   IID_IPropertyBag,    
                          (void   **)&pPropBag);//知道设备的名称  
                  if   (SUCCEEDED(hr))  
                  {  
                          //   To   retrieve   the   filter's   friendly   name,   do   the   following:  
                          VARIANT   varName;  
                          VariantInit(&varName);  
                          hr   =   pPropBag->Read(L"FriendlyName",   &varName,   0);  
                          if   (SUCCEEDED(hr))  
                          {  
                                  //   Display   the   name   in   your   UI   somehow.  
                                  //varName保存的就是设备名称  
                          }  
                          VariantClear(&varName);  
                         
                          //Remember   to   release   pFilter   later.  
                          pPropBag->Release();  
                  }  
                  pMoniker->Release();  
          }  
          pEnumCat->Release();  
  }  
  pSysDevEnum->Release();Top

4 楼tyong(伊面)回复于 2006-03-20 14:44:23 得分 0

你必须安装Direct   SDK才能编译成功Top

5 楼fsweiwei(令狐上官冲)回复于 2006-03-21 14:27:48 得分 0

还有简单一点的方法吗?  
  这个方法我在试.Top

6 楼rageliu(天气好了就去长白山看水怪去了,嘿嘿...)回复于 2006-03-21 17:42:10 得分 2

简单的看看有没有采集卡的sdk,应该有提供吧Top

7 楼fsweiwei(令狐上官冲)回复于 2006-03-22 12:46:41 得分 0

编译通过了,不过运行到这一步时就会出错.  
  还有设备名称获取是varName.pcVal么?  
   
  hr=pSysDevEnum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory,   &pEnumCat,   0);Top

8 楼fsweiwei(令狐上官冲)回复于 2006-03-22 12:53:48 得分 0

CoCreateInstance好像没成功.  
  我在底下做了一点改动.  
  hr   =   CoCreateInstance(CLSID_SystemDeviceEnum,   NULL,   CLSCTX_INPROC_SERVER,  
  IID_ICreateDevEnum,   (void   **)&pSysDevEnum);  
   
  if   (FAILED(hr))  
  {  
    exit(0);  
  }  
   
  每次都是直接退出了.Top

9 楼fsweiwei(令狐上官冲)回复于 2006-03-22 13:08:24 得分 0

需要include两个头文件  
  #include   "strmif.h"  
  #include   "uuids.h"  
  编译通过了.  
  我建了个对话框工程,放了一个BUTTON,然后把代码添进去,结果运行到CoCreateInstance时就会出错.  
  direct   SDK已经装了,是不是还要进行什么设置?Top

相关问题

  • 如何获取摄像头的图像
  • VC中如何控制摄像头
  • 如何同时获取多个摄像头的视频?
  • 关于获取摄像头中数据帧
  • 摄像头获取的视频如何添加背景啊??
  • 如何在获取摄像头的流媒体?
  • 如何获取usb接口摄像头采集的图像数据
  • 如何在PB的窗口中实时显示摄像头获取的图像?
  • 请教:如何在VC/VB中捕获摄像头图像?
  • 搞过摄像头的大虾请问:获取摄像头WebCam拍摄图像中的一帧该用什么函数?

关键词

  • hr
  • null
  • 摄像头
  • penumcat
  • psysdevenum
  • pmoniker
  • 名字

得分解答快速导航

  • 帖主:fsweiwei
  • tyong
  • rageliu

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo