【发布时间】:2019-07-18 03:55:13
【问题描述】:
我曾经在 opencv 的 v3.4.1 中使用此功能将相机名称映射到相机索引,但我已将其升级到 v4.1.0。但是这个功能不再起作用了。相机索引不再匹配。知道为什么会这样以及如何正确映射吗?
我实际上正在使用 Emgu 4.1.0 和 c#。下面我使用 DirectShowLib nuget 来获取 VideoInput 设备的列表。在 v3 中,顺序与 opencv 相机索引完美匹配。 v4中没有,好像顺序不对。
using DirectShowLib;
private DsDevice[] directShowCameras =
DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice);
private int getCameraIndexForName(string name)
{
for (int i = 0; i < directShowCameras.Count(); i++)
{
if(directShowCameras[i].Name.ToLower().Contains(name.ToLower()))
{
return i;
}
}
return -1;
}
【问题讨论】:
-
似乎如果我在打开相机索引时指定 DShow,它匹配正常。但这是为什么呢?默认后端是否已更改,如果更改,现在是什么,是否更好?
-
好吧,我发现 4.1.0 中的默认后端是 MSMF(微软媒体基金会)。任何人都知道如何使用此框架在 c# 中获取视频捕获设备列表?我怀疑索引会正确匹配
标签: c# opencv emgucv directshow