我想使用python OpenCV绑定(bind)在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之类的东西吗?线程中发出的信号/插槽是什么?
我从未使用过线程,所以对我来说这是全新的东西。
最佳答案
我自己无法测试,但是仅在循环中处理未决事件还不够吗?
那是:
def onRun(self):
self.playing = True
capture = cv2.VideoCapture(0)
while self.playing:
...
QtGui.qApp.processEvents()
time.sleep(0.02)
关于python - 在QLabel中显示摄像机流,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20299838/