我试图创建一个非常简单的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()
我用:
提前致谢!