使用PyQt5显示OpenCV视频

时间:2016-11-20 06:36:25

标签: python qt opencv video pyqt5

我试图创建一个非常简单的GUI来显示从网络摄像头捕获的视频。我知道如何用openCV窗口显示帧:

cap = cv2.VideoCapture(0)
while True:
    _, frame = cap.read()
    cv2.imshow('Frame', frame)

这会创建一个显示帧的额外窗口。我的问题是:如何在qt窗口中显示这些帧?

我先从图像开始。我创建了一个QLabel并将其用作容器来显示图像。它奏效了。我可以用类似的方式显示视频帧吗?

pixmap = QtGui.QPixmap(myImagePath)
self.imageBox.setPixmap(pixmap)
self.imageBox.show()
编辑:我尝试了类似的框架方法,但它崩溃了。 (陷入while循环?我不得不强制退出python)

def openCamera(self):
    self.capturing = True
    self.cap = cv2.VideoCapture(0)

    while self.capturing:
        _, frame = self.cap.read()
        videoFrame = QtGui.QImage(frame, 200, 200,
                                  QtGui.QImage.Format_RGB888)
        convertFrame = QtGui.QPixmap(videoFrame)
        self.imageBox.setPixmap(convertFrame)
        self.imageBox.show()

我用:

  • python 3.5.2
  • OpenCV 3.1.0
  • PyQt5
  • Windows 10

提前致谢!

0 个答案:

没有答案