WSL2 使用opengl渲染点云图并显示

莫名其妙就出来了,故记录尝试过程以便之后复现。

安装anaconda

在wimdows中从官网直接下的Anaconda3-2024.06-1-Linux-x86_64.sh文件。

bash /mnt/<小写盘符,没有分号>/<文件路径>/Anaconda3-2024.06-1-Linux-x86_64.sh

使用如上代码安装,mnt目录是wsl中挂载的windows硬盘,可以直接通过mnt获取windows中的文件。阅读条款的时候可以直接q跳过,注意最后会有一个是否选择写入环境变量的选项,默认是no的,需要输入yes,所以在前面的安装过程中尽量不要输入多余的enter,否则要自己写入环境变量。

然后就可以创建相应的环境,测试的时候选择open3d库,所以使用了python3.8,然后使用指令直接安装open3d库。

conda install -c open3d-admin open3d

安装cuda-toolkit

wsl2貌似可以从windows中的英伟达驱动中获取GPU信息,所以直接使用nvdia-smi是可以显示GPU信息的,但是我在测试的时候发现root下是正常显示的,但是在我自己的用户下就无法显示了。WSL2报错:nvidia-smi Command ‘nvidia-smi‘ not found, but can be installed with:_command 'nvidia-smi' not found, but can be install-CSDN博客

这里提供了一种思路,使用如下指令就可以了。

cp /usr/lib/wsl/lib/nvidia-smi /usr/bin/nvidia-smi
chmod ogu+x /usr/bin/nvidia-smi

注意需要先su到自己的用户下再使用。

然后根据nvidia-smi中GPU的cuda支持版本和选用的pytorch版本选择合适的cuda-toolkit包即可。

CUDA Toolkit Archive | NVIDIA Developer

(从中选择自己需要的toolkit版本然后根据系统选择即可,我是选择wsl-Ubuntu 2.0版本)

一开始我是选择下载完整安装包然后安装,出现了Failed to verify gcc version和gcc not found问题,根据ubuntu22.10安装cuda出错Failed to verify gcc version. See log at /var/log/cuda-installer.log for details.-CSDN博客

使用以下指令解决了问题。

sudo apt install gcc-11
apt-get update
apt install gcc

VcXsrv

一开始不知道wsl2已经支持了通过使用sudo apt install x11-apps -y安装linux渲染器直接支持了x11应用并可以无需x-sever创建窗口,而且网上基本全都是VcXsrv + opengl的教程,同时我自己尝试也跑不通,所以一开始我还是选择了使用VcXsrv,但是因为我不确定在这个过程中的一些操作是否影响到我最后不使用VcXsrv也可以进行渲染,所以把这一过程也记录下来。

首先是安装VcXsrv和配置VcXsrv,这里网上有很多教程,我这里不过多赘述。

我使用如下代码进行测试,其中部分代码来自于

使用python-open3d读取pcd,bin格式的点云,并显示_点云bin文件能用什么打开-CSDN博客

import open3d
import numpy as np
def read_display_bin_pc(path):
    points=np.fromfile(path,dtype=np.float32).reshape(-1,4)
    points=points[:,:3]
    pcd=open3d.geometry.PointCloud()
    pcd.points=open3d.utility.Vector3dVector(points)
    pcd.paint_uniform_color([1,0,0])
    vis=open3d.visualization.Visualizer()
    vis.create_window(window_name="point_cloud")
    opt=vis.get_render_option()
    opt.background_color=np.array([255, 255, 255])
    opt.point_size=1.0
    vis.add_geometry(pcd)
    vis.run()

read_display_bin_pc("/mnt/h/KITTI/data_object_velodyne/data_object_velodyne/testing/velodyne/000000.bin")

这里通过open3d渲染了一张KITTI数据集中的点云图。

在没有使用VcXsrv时,出现如下报错(有很多行,因为没有截图所以只取其中两行)

libGL error: MESA-LOADER: failed to open swrast
[Open3D WARNING] GLFW Error: GLX: Failed to create context: GLXBadFBConfig

一开始考虑是opengl版本问题,于是尝试更新mesa,使用

sudo apt install mesa-utils

发现没有解决问题,然后上网搜索,发现这篇文章:

[已解决] libGL error: MESA-LOADER: failed to open swrast-CSDN博客

使用其方法,通过在自己的环境中使用了如下指令。

 conda install -c conda-forge gcc

问题貌似还是没有得到解决,于是这时才尝试引入VcXsr ,并按照网上教程使用VcXsr,

在按照要求配置好后,确实能够进入渲染了,但是渲染速度非常慢,是类似于一行一行渲染的样子,一张图要渲染几十秒。无法接受。

在继续搜索中,发现了微软的官方文档中介绍了使用 WSL 运行 Linux GUI 应用 | Microsoft Learn

发现里面居然支持x11渲染linux窗口,很惊奇,于是马上使用sudo apt install x11-apps -y安装,但是结果似乎已经安装了。

$ sudo apt install x11-apps -y

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
x11-apps is already the newest version (7.7+8build2).
0 upgraded, 0 newly installed, 0 to remove and 48 not upgraded.

然后尝试性地输入了xclock,居然成功产生了窗口,注意此时我已经关闭了VcXsr,我又尝试调用了我的测试文件,结果居然渲染成功了

不太懂该怎么说,人也累了,之后有机会再尝试复现吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值