Docker中使用MTWindow创建GLFW窗口失败的解决求助
Docker中运行事件相机测试文件GLFW窗口创建失败的解决办法
操作步骤与问题现象
- 宿主机执行命令开启桌面访问:
xhost '+local:*'; - 运行容器命令:
sudo docker run -dit --privileged --name test3 -v /dev/bus/usb:/deb/bus/usb -e DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix/ -v ~/Event:/Event --net=host openeb:ubuntu-20.04 /bin/bash - 执行测试脚本时报错:
root@LPA3588:/Event/Z1_annotated# /bin/python3 "/Event/Z1_annotated/test_onlyfind copy.py" [SDK][ERROR] GLX: No GLXFBConfigs returned [SDK][ERROR] GLX: Failed to find a suitable GLXFBConfig Process Process-1: Traceback (most recent call last): File "/usr/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap self.run() File "/usr/lib/python3.8/multiprocessing/process.py", line 108, in run self._target(*self._args, **self._kwargs) File "/Event/Z1_annotated/test_onlyfind copy.py", line 81, in main with MTWindow(title="Metavision Events Viewer", width=width, height=height, RuntimeError: Impossible to create a glfw window
MTWindow中文说明
MTWindow是Prophesee OpenEB SDK中适配事件相机的多线程UI窗口类,专门用于事件流的实时可视化渲染。它依赖GLFW图形库与GLX扩展创建跨平台窗口,要求运行环境具备可用的X11图形上下文与OpenGL渲染支持。
解决方法
- 修正容器USB挂载路径:原命令中
/dev/bus/usb:/deb/bus/usb存在笔误,应改为/dev/bus/usb:/dev/bus/usb,确保相机设备能被容器正确识别。 - 安装容器内图形依赖:进入容器后执行以下命令安装GLX和GLFW相关依赖:
apt update && apt install -y libgl1-mesa-glx libglfw3 libglfw3-dev - 验证DISPLAY环境变量:在容器内执行
echo $DISPLAY,确认输出与宿主机一致。若不一致,手动设置:
或在启动容器时明确传递变量:export DISPLAY=:0-e DISPLAY=$DISPLAY - 强制软件渲染(硬件渲染失效时):在容器内设置环境变量启用LLVMpipe软件渲染:
之后再运行测试脚本。export LIBGL_ALWAYS_SOFTWARE=1 - 优化X11访问授权:宿主机执行更精准的授权命令:
xhost +local:root - 调整MTWindow创建参数:在代码中创建MTWindow时,可尝试添加
decorated=False参数禁用窗口装饰,或提前配置GLFW选项:import glfw glfw.window_hint(glfw.DECORATED, False)
内容的提问来源于stack exchange,提问作者wicky
相关产品推荐
相关产品推荐

