一、问题的基本描述:
    我希望在VC中加入两个摄像头,做一个简单的双目视觉进行三维重建的实验。
可是在加载摄像头的过程中出现了问题,我装的两个摄像头的索引号是一样的,都是0
按照MSDN的解释,也没有找到解决的办法。在网上找到了下面的方法:使用capGetDriverDescription函数得到已安装的捕获驱动的名称及版本:
char szDeviceName[80];
char szDeviceVersion[80];
for (wIndex = 0; wIndex < 10; wIndex++)
{
if (capGetDriverDescription (wIndex, szDeviceName,
sizeof (szDeviceName), szDeviceVersion,
sizeof (szDeviceVersion))
{
// Append name to list of installed capture drivers
// and then let the user select a driver to use.
}
}
我按照上面的办法试了一下,仍然有问题,就是得到的名称和版本居然也是一样的。我就没有办法了。
二、需要解决的问题
A)如何得到摄像头的名称,从而区分两个摄像头。比如,在系统中,两个摄像头的名称就不一样。
B)如何通过不同的名称来连接到窗口中。希望各位高手多指点!

解决方案 »

  1.   

    capDlgVideoSource 可以选择视频源if(ghWndCap)
    {
      CAPDRIVERCAPS gCapDriverCaps ;
      if( capDriverGetCaps(ghWndCap, &gCapDriverCaps, sizeof(CAPDRIVERCAPS)) )
      {
        if(gCapDriverCaps.fHasDlgVideoSource)//Video source 对话框 
          capDlgVideoSource(ghWndCap); 
      }
      else
      {
        ASSERT(0);
      }
    }
      

  2.   

    建议放弃VFW,使用dshow。用devicepath区分。
      

  3.   

    楼主大哥和楼上的同志们,我也遇到这个问题了,你们时怎么解决的呀?分享下呀,不胜感激!俺的邮箱[email protected]