1

在我们的项目中,我们希望以编程方式访问网络摄像头图像。我们遇到的主要问题是网络摄像头会根据捕获图像的亮度自动调整灵敏度。

是否有任何(与平台无关的)方法可以更改网络摄像头的此类参数(最好是任何型号)?

我们目前使用的是 Ubuntu 10.04、Microsoft Windows XP 和 7。编程语言是 C/C++。

任何想法都值得赞赏。

感谢和问候托比亚斯

4

1 回答 1

3

很可能不会有任何独立于平台的方式来做你需要的事情。如果有,可能是使用了一些高级语言,这可能不适合。

我不了解 linux 平台,但我是一名 C++/windows/COM/DirectShow 开发人员,从事基于 Internet 的视频应用程序。

在 Windows 平台上,捕获设备通过 COM 和 DirectShow 进行通信。

有关 Windows 上视频捕获的一般概述,请参阅 MSDN 的视频捕获部分。

有关如何枚举系统上的捕获设备的信息,请查看选择捕获设备。您需要枚举 CLSID_VideoInputDeviceCategory 中的设备,以便(以编程方式)发现网络摄像头作为视频输入设备 - 此类别中可能有许多设备。

视频捕获设备有一个“FriendlyName”来帮助识别您的网络摄像头,您可以存储和检索设备以供以后使用。

获得设备后,您的查询表明您想要配置设备。请查看为此配置视频捕获设备

DirectShow 是 Microsoft 最全面(也是最难)学习的 API 之一。 DirectShow 上的 MSDN 开发者论坛非常活跃,对初学者很友好,我强烈建议您去看看。

最后,捕获图表并不是在 DirectShow 中构建的最简单的东西,我将从一个简单的回放图表开始 - 例如从磁盘回放媒体文件并从那里进行捕获图表。

VLC 项目是开源和跨平台的,它使用 DirectShow 在 windows 平台上播放。

祝你好运!

于 2010-10-12T13:01:38.077 回答