VTK 与真实 X 一起工作,与 Xvfb 一起崩溃

2023-12-19

我正在调试一个第 3 方 Python 脚本,该脚本使用 VTK 库实现无头图像处理。当使用常规 X 窗口会话运行时,它会按预期工作,窗口会瞬间闪烁。当针对 Xvfb(内存中的虚拟帧缓冲区)运行时,它会崩溃。脚本是这样的(省略了一些废话):

inname = args[0]
outname = args[1]

from vtk import *

reader = vtkPLYReader()
reader.SetFileName(inname)

gf = vtkGraphicsFactory
gf.SetOffScreenOnlyMode(1)
gf.SetUseMesaClasses(1)
if_ = vtkImagingFactory
if_.SetUseMesaClasses(1)

mapper = vtkPolyDataMapper()
mapper.SetInputConnection(reader.GetOutputPort())
actor = vtkActor()
actor.SetMapper(mapper)

renderer = vtkRenderer()
renderWindow = vtkRenderWindow()
renderWindow.SetSize(xsize, ysize)
renderWindow.SetOffScreenRendering(1)
renderWindow.AddRenderer(renderer)
renderer.AddActor(actor)
renderer.SetBackground(1, 1, 1)
renderWindow.Render()          #<------------ This line crashes

wif = vtkWindowToImageFilter()
wif.SetInput(renderWindow)
wif.Update()

writer = vtkPNGWriter()
writer.SetFileName(outname)
writer.SetInput(wif.GetOutput())
writer.Write()

崩溃消息如下:

ERROR: In /builddir/build/BUILD/VTK/Rendering/vtkXOpenGLRenderWindow.cxx, line 404
vtkXOpenGLRenderWindow (0x26942e0): Could not find a decent visual

Segmentation fault (core dumped)

Xvfb 作为服务运行;它的命令行是:

 /usr/bin/Xvfb :99 -ac -extension GLX

DISPLAY设置为:99用于测试。操作系统是RHEL 6。

欢迎任何评论什么是“视觉”以及如何在 Xvfb 中启用“视觉”。

编辑:运行glxinfo给出了类似的消息:

Error: couldn't find RGB GLX visual or fbconfig

但 GLX 扩展就在命令行中。 Xvfb 日志没有任何错误消息。

EDIT2:但是当我这样做时xdpyinfo -queryExtensions、GLX未上市。


我使用 Xvfb 运行 selenium 测试,但我使用该模块xvfb包装器 https://pypi.python.org/pypi/xvfbwrapper,它是Xvfb的轻量级模块

代码如下:

from xvfbwrapper import Xvfb
display = Xvfb()
display.start()
[ yourcode ]
display.stop()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VTK 与真实 X 一起工作,与 Xvfb 一起崩溃 的相关文章

随机推荐