gpt4 book ai didi

python - Python 中的网络摄像头 DirectShow 属性页

转载 作者:太空宇宙 更新时间:2023-11-04 06:33:19 37 4
gpt4 key购买 nike

我正在开发一个 Windows Python 2.7 应用程序,它需要与许多不同的 USB 网络摄像头进行通信。我一直在使用 OpenCV,但对于某些科学网络摄像头,未检测到默认帧速率、捕获格式等,我只得到一张空白图像。可以打开 DirectShow 属性页的外部程序可以在我的程序中修复此问题,但我希望在我的应用程序中具有此功能。

我尝试了一个可用的 Python 库来执行此操作:VideoCapture (http://videocapture.sourceforge.net/)。虽然这会打开属性页,但它不允许更改任何设备设置(“错误连接...此格式当前不可用”,但 AMCAP 有效)。我想知道底层代码是否太过时了。

在 VideoCapture 或 videoInput (http://www.muonics.net/school/spring05/videoInput/) 中使用 C++ 代码并不是很有帮助,因为它们都依赖于分布在许多旧的、特定的 DirectX/WindowsSDK 包。不幸的是,我没有知识或时间从头开始或弄清楚 VideoCapture 有什么问题。

是否有另一个已经组装好的 Python 包可以做到这一点?我一直在寻找一段时间,运气不佳。我略微查看了 libvlc python 绑定(bind)(因为 VLC 可以访问属性页)和 DirectPython,但我不清楚它们是否符合我的要求。

谢谢!

最佳答案

由于我最近一直致力于此,所以我可以为任何感兴趣的人提供对我自己的问题的部分答案:

videoInput库包含在 OpenCV 中的 Direct Show 实现中. videoInput库可用于打开视频属性页面(增益、曝光等),但不能打开视频设置页面(包含捕获格式、图像大小、帧速率等),因为没有代码。 Cython可用于在 Python 中与此库进行交互而不会出现太多问题。

OpenCV 的 Python 绑定(bind)可用于访问 Direct Show 视频属性页面。这需要:

  1. 在打开相机设备时使用 Direct Show 驱动程序,方法是将值 CV_CAP_DSHOW 添加到索引(没有 python 常量,使用值 700)。
  2. 使用 VideoCapture::set(int propID, ...) 中的(未记录的)propID CV_CAP_PROP_SETTINGS 调用要显示的窗口。同样,此常量不在 Python 绑定(bind)中,因此使用值 37(来自 highgui_c.h)

(这些指令从 OpenCV 2.4.6 开始工作,希望 Python 绑定(bind)有更多常量)

关于python - Python 中的网络摄像头 DirectShow 属性页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14418990/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com