在我们的项目中,我们希望以编程方式访问网络摄像头图像。 我们遇到的主要问题是网络摄像头会根据拍摄图像的亮度自动调整灵敏度。
是否有任何(平台无关的)方式来更改网络摄像头(最好是任何型号)的这种参数?
我们目前正在使用Ubuntu 10.04,Microsoft Windows XP& 7.编程语言是C / C ++。
任何想法都表示赞赏。
谢谢和问候 托拜厄斯
答案 0 :(得分:3)
很可能不会有任何独立于平台的方式来做你需要的事情。如果有,可能是使用某种高级语言,这可能不适合。
我不了解Linux平台,但我是一名C ++ / windows / COM / DirectShow开发人员,负责基于互联网的视频应用程序。
在Windows平台上,捕获设备通过COM和DirectShow进行通信。
有关Windows上视频捕获的一般概述,请参阅MSDN的Video Capture部分。
有关如何枚举系统上的捕获设备的信息,请查看Selecting a Capture Device。您需要枚举CLSID_VideoInputDeviceCategory中的设备,以便(以编程方式)发现网络摄像头作为视频输入设备 - 此类别中可能有许多设备。
视频捕获设备具有“FriendlyName”,可帮助识别您可以存储和检索设备的网络摄像头,以供日后使用。
获得设备后,您的查询表明您要配置设备。请查看Configuring a Video Capture Device。
DirectShow是微软最全面(也很难)学习的API之一。 The MSDN developer forum on DirectShow非常活跃,对初学者友好,我强烈建议您查看。
最后,捕获图不是在DirectShow中构建的最简单的东西,我从一个简单的回放图开始 - 例如从磁盘播放媒体文件并从那里继续捕获图形。
VLC project是开源和跨平台的,它使用DirectShow在Windows平台上播放。
祝你好运!