我想使用python OpenCV绑定在QLabel中显示网络摄像头流。我在这里找到了一些以前的帖子:
一开始我尝试了一个简单的“while”循环:
def onRun(self):
self.playing = True
capture = cv2.VideoCapture(0)
while self.playing:
_, data = capture.read()
data = cv2.cvtColor(data, cv2.cv.CV_BGR2RGB)
qImage = QtGui.QImage(data, data.shape[1], data.shape[0],
QtGui.QImage.Format_RGB888)
self.lblImage.setPixmap(QtGui.QPixmap.fromImage(qImage))
self.lblImage.adjustSize()
time.sleep(0.02)
但我遇到了一个“白窗”问题。我发现解决这个问题的正确方法是创建一个新线程。我的问题是:新线程是什么?我应该创建QThread还是什么?什么是线程中的信号/插槽?
我从未使用线程,所以这对我来说是全新的。
答案 0 :(得分:0)
我自己无法测试,但仅仅处理循环中的待处理事件是不够的?
那是:
def onRun(self):
self.playing = True
capture = cv2.VideoCapture(0)
while self.playing:
...
QtGui.qApp.processEvents()
time.sleep(0.02)