在 Windows 下访问网络摄像头时出现问题 10 / OpenCV

Problems accessing web camera under Windows 10 / OpenCV

我正在做一个需要实时访问网络摄像头的项目,但在 Windows10 下获取合适的摄像头流以使用 OpenCV 处理帧时遇到问题。

我可以在 Windows 8.1 下正常访问相机。使用

这些允许以高帧率 (~30fps) 捕获网络摄像头流,并使用例如

设置网络摄像头分辨率

cvCapture.set(CV_CAP_PROP_FRAME_WIDTH, 640);

cvCapture.set(CV_CAP_PROP_FRAME_HEIGHT, 480);

在 Windows 10 下,但是,上述两种解决方案都会导致问题:

我什至尝试用以下方式打开相机流:

cv::VideoCapture cvCapture(CV_CAP_DSHOW + camnum);

cv::VideoCapture cvCapture ( CV_CAP_MSMF + camnum );

第一个有效(就打开流而言,但存在与上述相同的问题),MSMF(Microsoft Media Foundation)导致 cvCapture.isOpened() 返回 false;

实时处理 FullHD 流对于图像处理算法不可行,使用 OpenCV 调整结果帧的大小也不可行。

Windows 8.1 版本在 Surface Pro 3 (Core i7) 上是 运行,在 Surface Pro 4 (Core i7) 上是 Windows 10 版本。这可能是硬件/相机驱动程序问题吗?我尝试为 Surface 4 查找更新的驱动程序,但无济于事。

有没有人遇到过类似的问题?有没有我忽略的明显解决方案?

我认为您在 Windows 10 上的 videoInput 问题与选择正确的网络摄像机媒体类型有关。事实上,OpenCV 默认使用 DirectShow,而 Media Foundation 上的 videoInput 只是可选的。 我建议您更正检查变量:

float MF_MT_FRAME_RATE_RANGE_MAX;
float MF_MT_FRAME_RATE;
float MF_MT_FRAME_RATE_RANGE_MIN;

// Structure of info MediaType 
struct MediaType

我还建议您访问网站 Capture Manager Topology Editor - 这是一款通过 Media Foundation 使用网络摄像头的免费软件。它允许在 Surface Pro 4 (Core i7) 上验证 Media Foundation 的可访问功能。

谨致问候, 叶夫根·佩雷古达