pyqtgraph grabFrameBuffer保存一张空图片
pyqtgraph grabFrameBuffer saves an empty image
我有一个 3D 渲染图,看起来像我正在尝试保存的下图。然而,图像是黑色的,没有绘制任何东西,我不确定为什么。我正在按照此处 https://pyqtgraph.readthedocs.io/en/latest/exporting.html#exporting-3d-graphics 提供的指南进行操作,但没有提供很多帮助。它只是写 glview.grabFrameBuffer().save('fileName.png')
下面是代码的重要部分。我用单线渲染替换了渲染线和点云的部分。
import pyqtgraph.opengl as gl
from pyqtgraph.Qt import QtWidgets
if __name__ == '__main__':
# initialize screen
app = QtWidgets.QApplication(sys.argv)
w = gl.GLViewWidget()
line = np.array([[0,0,0],[1,1,1]])
line_renderer = gl.GLLinePlotItem(pos=line, width=1, antialias=False)
w.addItem(line_renderer)
g = gl.GLGridItem()
w.addItem(g)
w.show()
w.grabFrameBuffer().save('fileName.png')
app.exec()
grabFrameBuffer()
根据 GLViewWidget
中显示的内容创建一个 QImage,但是指令的呈现不是即时的,您必须等待 Qt 来完成。考虑到上述情况,解决方案是稍后使用 QTimer 来完成此任务:
QtCore.QTimer.singleShot(100, lambda: w.grabFrameBuffer().save("fileName.png"))
我有一个 3D 渲染图,看起来像我正在尝试保存的下图。然而,图像是黑色的,没有绘制任何东西,我不确定为什么。我正在按照此处 https://pyqtgraph.readthedocs.io/en/latest/exporting.html#exporting-3d-graphics 提供的指南进行操作,但没有提供很多帮助。它只是写 glview.grabFrameBuffer().save('fileName.png')
下面是代码的重要部分。我用单线渲染替换了渲染线和点云的部分。
import pyqtgraph.opengl as gl
from pyqtgraph.Qt import QtWidgets
if __name__ == '__main__':
# initialize screen
app = QtWidgets.QApplication(sys.argv)
w = gl.GLViewWidget()
line = np.array([[0,0,0],[1,1,1]])
line_renderer = gl.GLLinePlotItem(pos=line, width=1, antialias=False)
w.addItem(line_renderer)
g = gl.GLGridItem()
w.addItem(g)
w.show()
w.grabFrameBuffer().save('fileName.png')
app.exec()
grabFrameBuffer()
根据 GLViewWidget
中显示的内容创建一个 QImage,但是指令的呈现不是即时的,您必须等待 Qt 来完成。考虑到上述情况,解决方案是稍后使用 QTimer 来完成此任务:
QtCore.QTimer.singleShot(100, lambda: w.grabFrameBuffer().save("fileName.png"))