C++中的网络摄像头访问

24

我想要访问网络摄像头以便对图像进行一些处理,例如跟踪光源,但我找不到访问网络摄像头的方法。我在谷歌上搜索了一下,但是感到很困惑。

你能指引我使用一个能够做到这一点的库(windows)吗?也可以提供一个例子吗?

我需要定期获取图像的像素地图,大约每秒20次左右如果可能的话。


请更新此帖子。是否有适用于Windows 10的更新版本或其他开发平台? - Jose Enrique Calderon
6个回答

18

您需要使用DirectShow。这是Windows视频播放和捕获的框架。

它包含在Windows SDK中,并且包括许多有关视频输入捕获的示例。

但是,正如Vijay所提到的那样,您也可以尝试使用OpenCV,因为它不仅抽象了特定于平台的视频捕获API,还包括许多图像处理算法,您可以用来跟踪项目中的光线。


14

有一个DirectMedia/DirectShow封装器叫做Extremely Simple Capture API或者ESCAPI。如果您不需要进行复杂的操作,那么使用ESCAPI可能是个不错的选择。


这个库非常棒,易于使用! - Valerij
1
我想补充一下,我刚刚在一个需要视频捕获并且我想使用GLUT(而不是十页的Windows调用)的项目中使用了ESCAPI,并且我对它感到非常满意。 - Steve Howard
我已经尝试使用它,但是它没有起作用。显然我的网络摄像头使用了MJPG编码,而它只支持未压缩的编码。 - kalugny

9

请查看OpenCV,它是一个跨平台的计算机视觉SDK,并具有从网络摄像头中捕获图像的模块。也许对你来说过于功能丰富,但还是值得一试的。


5
如果你的目标是Windows Vista(或Seven),那么就有新的Media Foundation SDK可用,它更易于操作,功能更加丰富,最重要的是,未来将得到微软更好的支持。你可以在这里了解更多信息:这里。关于视频捕获的具体内容,可以在这里找到。

3

2
您可以使用 DirectShow: 这里

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接