【问题标题】:PyQtGraph: Live video stream freezes using ImageViewPyQtGraph:使用 ImageView 冻结实时视频流
【发布时间】:2014-08-14 01:04:24
【问题描述】:

大家好,

我正在为相机编写一个 GUI,我想要一个带有来自相机的实时流的小部件。

按照其中一个示例,我是这样做的:

def updateview():
    global img, camera
    img.setImage(camera.most_recent_image(camera.detector_shape))

win = QtGui.QWidget()

# Image widget
imagewidget = pg.GraphicsLayoutWidget()
view = imagewidget.addViewBox()
view.setAspectLocked(True)
img = pg.ImageItem(border='w')
view.addItem(img)
view.setRange(QtCore.QRectF(0, 0, 512, 512))

layout = QtGui.QGridLayout()
win.setLayout(layout)
layout.addWidget(imagewidget, 1, 2, 3, 1)
win.show()

viewtimer = QtCore.QTimer()
viewtimer.timeout.connect(updateview)
viewtimer.start(0)

app.exec_()
viewtimer.stop()

这确实有效,如果不是因为我还需要侧面的强度直方图,我会很高兴的。

所以我尝试像这样更改第一段:

def updateview():
    global img, camera
    img.setImage(camera.most_recent_image(camera.detector_shape), 
                 autoHistogramRange=False)

win = QtGui.QWidget()
img = pg.ImageView()
layout = QtGui.QGridLayout()
win.setLayout(layout)
layout.addWidget(img, 1, 2, 3, 1)

这仅适用于几帧(我可以看到图像发生变化并且直方图相应移动)然后整个 GUI 冻结。有人见过这种行为吗?

非常感谢,

费德里科

【问题讨论】:

    标签: pyqtgraph


    【解决方案1】:

    首先:可以在没有 ImageView 的情况下使用直方图/对比度控件。见:https://github.com/pyqtgraph/pyqtgraph/blob/develop/examples/imageAnalysis.py

    关于冻结:如果我运行您的代码生成随机数据而不是从相机中提取数据,它运行得很好。我怀疑问题出在其他地方。您是否可能不正确地使用多个线程?您可能需要发布一个更完整的示例,并进行一些测试以确定程序挂起的位置。

    【讨论】:

    • 谢谢卢克!没有 ImageView,它不会冻结!
    猜你喜欢
    • 2019-11-22
    • 1970-01-01
    • 2016-10-15
    • 2015-03-27
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-24
    相关资源
    最近更新 更多