【发布时间】:2012-02-27 13:13:15
【问题描述】:
我使用这个库http://videocapture.sourceforge.net/ 来捕获网络摄像头。但我不明白它是如何将视频流发送到qpixmap。
【问题讨论】:
标签: python pyqt webcam qpixmap
我使用这个库http://videocapture.sourceforge.net/ 来捕获网络摄像头。但我不明白它是如何将视频流发送到qpixmap。
【问题讨论】:
标签: python pyqt webcam qpixmap
如果您查看此库的文档,您会发现它非常简短和甜蜜。 http://videocapture.sourceforge.net/html/VideoCapture.html
我可以告诉你有两种方法可以让你的图像进入 Qt...
最好的方法——直接进入QImage
getImage() 声明它将返回一个 PIL 图像。如果您使用的是最新版本,PIL 有一个名为 ImageQt 的模块,它可以获取一个 PIL Image 对象并返回一个 QImage。从这里您可以将其转换为 QPixmap:
from PyQt4 import QtCore, QtGui
from VideoCapture import Device
from PIL import Image, ImageQt
app = QtGui.QApplication([])
cam = Device()
# this is a PIL image
pilImage = cam.getImage()
# this is a QImage
qImage = ImageQt.ImageQt(pilImage)
# this is a QPixmap
qPixmap = QtGui.QPixmap.fromImage(q)
另一种方式 - 先写入磁盘
如果您按照他们在此模块网站上提供的示例进行操作,他们将向您展示如何使用 saveSnapshot() 将图像保存到磁盘。这比第一种方法不太理想,因为您必须进行磁盘 i/o,但我仍然会提到它。然后,您可以将其作为 QPixmap 读入您的 Qt 应用程序:
cam = Device()
cam.saveSnapshot('image.jpg')
qPixmap = QtGui.QPixmap('image.jpg')
执行第一种方法。它更快更高效。
【讨论】: