赞
踩
在 Python 中使用 OpenCV 是视觉应用程序原型的一个非常好的解决方案,它允许您快速起草和测试算法。处理从文件中读取的图像非常容易,如果要处理从相机捕获的图像,则不那么容易。OpenCV 提供了一些基本方法来访问链接到 PC 的相机(通过对象),但大多数时候,即使对于简单的原型来说,它们也不够用。例如,不可能列出链接到 PC 的所有摄像机,也没有快速调整摄像机参数的方法来。或者,您可以使用 PyGame 或相机制造商提供的 SDK(如果可用)。VideoCapture
在与相机交互的Windows中,通常使用DirectShow。它的主要优势是:
DirectShow
相反,这是一项相当古老的技术,正在被Windows Media Foundation所取代,Microsoft不再开发它。但这没什么大不了的,因为它具有所需的所有功能,并且用于许多应用程序,以至于(在我看来),Microsoft 将长期保持它可用。
在这里,我想提出一个完全用 Python 编写的简单应用程序,它允许您使用 、在屏幕上显示它们并使用 OpenCV 对它们进行简单的处理。该应用程序基于一个类,该类公开了某些功能,并且可以在其他应用程序中重用。该代码设计为易于更改和扩展。DirectShow
DirectShow
使用应用程序
numpy
matplotlib
opencv-python
comtypes
在 Windows 10 上,如果文本大小已设置为不同于 100% 的值(在 Windows 的“显示设置”屏幕上),则相机的实时图像可能在包含的帧上显示未完全对齐。这似乎是DirectShow的问题,因为我在其他应用程序上也有相同的行为。
DirectShow
是编写多媒体应用程序的框架。应用程序的构建基块是一个筛选器,一个执行基本操作的对象,例如:DirectShow
滤波器可以具有输入和输出引脚,并且可以将它们连接在一起以执行所需的工作
DirectShow
提供一个名为 Filter Graph 的对象,该对象负责收集、链接和运行过滤器。
对于我们的应用程序,我们需要以下过滤器:
SampleGrabber
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。