首页 > 技术文章 > Python常用模块之VideoCapture

zhwm9521 2017-09-11 15:18 原文

 

官方网址:http://videocapture.sourceforge.net/

  

功能介绍:

  VideoCapture是Win32版Python的一个扩展,可以访问视频采集设备(如USB摄像头)。它包含一个底层本地模块(vidcap.pyd)[1]和一个仅用Python编写的高层模块(VideoCapture.py)。还包括一些工具,可以用来定期上传摄像头拍摄的图像到网络服务器,监控并通过给定的URL保存图片到本地磁盘,等等。详细细节请参阅“Tools”目录下的“README.txt”文件。

  

模块下载:

注意事项:PIL 1.1.2及以前版本在使用.gif字体文件时会出现内存泄漏的情况。如果你打算使用VideoCapture 0.7以前的版本,请删除你Python安装目录下的Lib目录中的helvB08.gif文件和helvetica-10.gif文件 ! !

  

使用依赖:

除Python和VideoCapture模块本身,你还需要以下组件:

  • 底层模块使用DirectShow,DirectShow已经包含在DirectX 8.0和更高版本中。如果你没有安装DirectShow,请从微软相关网站上下载DirectX并安装。Windows XP系统本身已经集成了DirectX。
  • 高层模块需要使用PIL模块,从像素数据中解析出实际图片。PIL可硬从PythonWare网站上下载。
  • (可选)如果你想使用“scp”作为在webcam-uploader.py中传输方法,你可以选择scp2.exe,在SSH的安装文件中可以获取,或者选择pscp.exe,可以在PuTTY中获取。

  

安装模块:

  要想使用VideoCapture,只需将文件从“PythonXX”文件夹复制到相应的“PythonXX”安装文件夹下,其中“XX”代表安装在你的操作系统上的Python版本,例如:Python27,XX就为27。

  

使用示例:

1 from VideoCapture import Device
2 
3 cam = Device()
4 cam.saveSnapshot('image.jpg')
  • “Examples”夹中包含了几个简单的例子,可以直观的感受到使用VideoCapture从视频设备中获取图片,是十分便利的。参阅“exa2_show-possibilities.py”可以了解到更多额外的可用选项的详情。
  • 想了解更多详细信息,可以查看模块说明文档

  

存在缺陷:

  • setResolution()可能对设备分辨率属性值CaptureFilterProperties的设置不起作用。
  • 一些TV-cards在电视应用后终止后丢失调谐器(频道)设置,所以VideoCapture应该提供一种方法来显示调谐器的属性页。

  

相关内容:

如果你想从支持Twain协议的扫描仪或数码相机中获取照片,可以使用Kevin Gill的twainmodule模块。

 

 历史版本:

 (01.03.2012) Version 0.9-5 

  • 添加一个新方法到vidcapmodule.cpp文件中,可以获取Windows设备友好的名称(例如:Microsoft Lifecam VX-4000)。由Jeremy Mortis提供。

 

(15.04.2011) Version 0.9-4

  • 包含与Python 2.7 64位链接的底层模块的预编译二进制文件,由Jurriaan Schreuder提供。

 

(04.10.2010) Version 0.9-3

  • 包含与Python 2.7链接的底层模块的预编译二进制文件,由Chris Spencer提供。

 

(30.11.2008) Version 0.9-2

  • 包含与Python 2.6链接的底层模块的预编译二进制文件,由Jim Gasbarro提供。

 

(8.1.2007) Version 0.9-1

  • 包含与Python 2.5链接的底层模块的预编译二进制文件。

 

(27.8.2005) Version 0.9

  • Jonathan Viney修复了在使用没有摄像头连接的模块时可能导致崩溃的错误。
  • 包含与Python 2.4链接的底层模块的预编译二进制文件。

 

(8.10.2003) Version 0.8

  • 添加模块说明文档。
  • 将工程迁移到到SourceForge.net。
  • 包含与Python 2.3链接的底层模块的预编译二进制文件。
  • 加入Don Garrett和Don Kimber(Tools\3rdParty)的独立网络服务器。 Don Kimber的推送器很有意思。 现在我可以在Mozilla窗口中看到25fps的电视:-)
  • 添加了由Don Kimber贡献的setResolution()方法。(可能仅适用于具有CapturePinProperties中指定分辨率的设备。)
  • Don Kimber修复了在displayCapturePinProperties()中一个小但严重的不一致,有时会导致段错误。

 

(4.3.2002) Version 0.7

  • 用.png字体代替.gif字体,因为PIL版本1.1.2及更低版本在使用.gif字体时显示内存泄漏。 如果您在0.7之前使用了VideoCapture的版本,请删除Python安装的Lib文件夹中的文件'helvB08.gif'和'helvetica-10.gif'。
  • 将displayPropertyPage()替换为displayCaptureFilterProperties()和displayCapturePinProperties()。这最终允许选择诸如在捕获期间为每种设备驱动程序使用的视频大小(现在也用于WDM驱动程序,以前仅适用于VfW驱动程序)。
  • 由于每次捕获时启动和停止图形过滤器,因为某些设备驱动程序存在一些内存泄漏问题,因此该图形将继续运行。 除了解决内存问题,这有很大的优势,拍摄快照现在真的很快。 每秒拍摄10张以上的快照是没有问题的:-)
  • scp现在也可以用pscp.exe程序,该程序可以在PuTTY发行版中找到。
  • 通过释放MediaType.pbFormat来修复一个小的内存泄漏。
  • 添加了DirectShow AMCAP实用程序,可用于检查捕获设备是否与VideoCapture兼容。

 

(20.2.2002) Version 0.6

  • 包含与Python 2.2链接的底层模块的预编译二进制文件。
  • 将可独立运行的图形化程序webcam-watcher放到网页上。
  • 添加scp作为webcam-uploader的附加上传方法(另外是ftp)。
  • “Tools”文件夹中的所有程序的其他次要功能进行增强。
  • displayPropertyPage()对话框显示在所有其他窗口的顶部。
  • 在调用displayPropertyPage()后,重建图形过滤器。

 

(08.12.2001) Version 0.5

  • 将过滤器初始化更改为使用捕获引脚而不是视频设备过滤器的预览引脚。 这应该可以解决一个奇怪的超时问题,甚至允许我从我的电视卡捕获快照:-)
  • 向Device类添加了一个方法displayPropertyPage(),该方法显示包含捕获设备的属性页面的对话框。这允许选择拍摄时使用的视频大小。

 

(10.7.2001) Version 0.4

  • 添加了一个基于PyQt的程序,它定期从网络上检索图片并将其显示在GUI窗口中。
  • 网络摄像头上传器的几项改进。现在,还可以将显示上传的图像并定期重新载入的HTML文件与WebServer上的图像一起放置。

 

(28.6.2001) Version 0.3

  • 包括与Python 2.1链接的底层模块的预编译二进制文件(除了已经包含与Python 2.0链接的)。
  • 添加了一个工具,通过FTP定期将WebCam映像上传到WebServer。
  • 添加了一个工具来监视(并在变更的情况下保存)位于给定URL的图片。
  • 同时可以打开多个设备实例。
  • 时间戳在图像中的位置是可选择的。

 

(24.6.2001) Version 0.2

  • 在每次系统调用后增加广泛的错误检查。如果出现问题,会出现异常。
  • 对高层接口的一些改进,如可选择的字体风格,便于辨识的各种阴影模式。
  • 可以指定应该使用的视频设备。

 

(18.6.2001) Version 0.1

  • 初始发行版本。

 

注解:

[1] .pyd文件与dll文件是一样的吗?

 

 

----------------------------正文结束----------------------------

感谢大家能够看到这里,谢谢!

初次翻译外文内容,希望大家不要吝啬话语,能够指出我的不足之处。

联系方式:1.博客文章下方留言  2.个人邮箱:zhwm9521@qq.com

 

推荐阅读