-1

我使用这个库http://videocapture.sourceforge.net/来捕获网络摄像头。但我不明白它是如何将视频流发送到qpixmap.

4

1 回答 1

2

如果你查看这个库的文档,你会发现它非常简短和甜蜜。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')

做第一种方法。它更快更高效。

于 2012-02-28T08:03:56.060 回答