分享

学习PCL库:PCL库中的IO模块介绍

 点云PCL 2023-04-12 发布于上海

公众号致力于点云处理,SLAM,三维视觉,高精地图等领域相关内容的干货分享,欢迎各位加入,有兴趣的可联系dianyunpcl@163.com。未经作者允许请勿转载,欢迎各位同学积极分享和交流。

IO模块介绍

PCL库的IO模块提供了一系列读取、写入点云数据的方法,支持多种常见的点云文件格式,如PCD、PLY、OBJ、STL、VTK等。也增加了对很多常见相机的IO读写。下面将对PCL库的IO模块进行详细介绍。

主要内容

pcl::ASCIIReader

pcl::ASCIIReader 是 PCL 库中的 I/O 模块之一,用于读取纯文本格式(ASCII)的点云数据。它支持从文本文件、字符串、标准输入流(stdin)以及 boost::iostream 中读取数据。此外,该类还可以读取 xyz、xyzrgb、xyzrgba 等格式的点云数据。

该类的实现方法较为简单,主要是针对不同的数据源(文本文件、字符串等)进行数据读取,并通过 pcl::PointCloud 类进行数据存储。其主要实现函数如下:

templateboolpcl::ASCIIReader::readHeader (const std::string &file_name, pcl::PCLPointCloud2 &cloud, Eigen::Vector4f &origin, Eigen::Quaternionf &orientation, int &pcd_version, const int offset){    // ...}templateintpcl::ASCIIReader::read (const std::string &file_name, pcl::PointCloud&cloud){    // ...}

其中,readHeader 函数用于读取点云数据的元信息(如点云的原点、坐标系等),而 read 函数则用于读取点云数据本身。在读取数据时,ASCIIReader 会根据点云数据的格式逐行读取数据,然后将每个数据行解析成点云中的一个点,最后将所有点存储在 pcl::PointCloud 中。在读取过程中,ASCIIReader 还会对点云数据进行简单的数据校验,以确保读取到的数据格式正确。

pcl::io::Buffer

它用于在内存中存储点云数据。它是一个纯 C++ 类,可以独立于任何文件格式使用。在读取和写入点云数据时,pcl::io::Buffer 可以作为一个中间层,将点云数据存储在内存中,然后可以将它们转换为不同的文件格式进行保存。与其他 I/O 模块不同,pcl::io::Buffer 并不直接读取或写入任何文件格式,它只是将数据存储在内存中。使用 pcl::io::Buffer 可以减少在文件读写操作中的内存分配和复制,从而提高点云处理的效率。

pcl::DavidSDKGrabber

它是基于 David SLS-2 结构光扫描仪开发的,用于将该扫描仪的输出转换为点云格式。该抓取器可以读取 David SLS-2 硬件设备并从其输出流中提取点云数据。

David SLS-2 是一种采用结构光技术的三维扫描仪,能够快速地获取高精度的点云数据。该扫描仪是一种基于 triangulation 技术的扫描仪,使用具有多个编码的投影光和相机对被测物体进行扫描。通过这种方式可以计算出每个像素点的三维坐标。

pcl::DavidSDKGrabber 的实现方法是基于 David SDK 库。该库提供了一个名为 SlsScan 的类,该类封装了 David SLS-2 设备的 API,并提供了许多函数,可以将设备输出流中的数据转换为点云格式。pcl::DavidSDKGrabber 利用 SlsScan 类的函数,将设备的输出流中的数据读取并转换为 PCL 的点云格式。

pcl::io::DeBayer

pcl::io::DeBayer的实现基于OpenCV库,主要通过双线性插值来进行像素颜色的估计。双线性插值是一种基于邻近像素的插值方法,通过计算目标像素周围四个邻近像素的加权平均值来估计目标像素的颜色值。对于Bayer格式的图像,pcl::io::DeBayer会先根据相邻的像素点计算出每个像素点的RGB值,然后再进行双线性插值得到所有像素点的RGB值,最终输出一个RGB格式的彩色图像。

pcl::DepthSenseGrabber

基于 DepthSense 相机获取深度和彩色图像,并将其转换为点云数据。相机传感器的原理是通过红外(IR)光源和红外摄像机来感知环境中物体的距离。具体来说,DepthSense 相机包含以下主要组件:

* 两个发射器,分别用于发射红外光和某种模式下的红色光;

* 两个摄像头,分别用于接收由红外光和红色光反射回来的光。

当红外光被物体反射回来,它将被摄像机捕获,从而形成深度图像。另一方面,彩色图像则是通过从同一位置捕获的标准彩色摄像机获取的。为了将深度图像和彩色图像对齐,必须将它们的内部参数和外部参数进行校准。

因此,pcl::DepthSenseGrabber 的主要原理是获取 DepthSense 相机捕获的深度和彩色图像,然后使用已知的内部参数和外部参数对它们进行对齐和转换,并将它们转换为 PCL 点云格式。

pcl::DinastGrabber

pcl::DinastGrabber是PCL中的一个点云采集类,用于从本地保存的DINAST数据中读取点云数据。本质上,pcl::DinastGrabber是pcl::Grabber的子类,因此可以使用PCL中基于pcl::Grabber的点云处理工具来对读取的点云进行处理。

DINAST(DIgital NAvigation Sensor Technologie)是由德国公司 iMAR Navigation 开发的一种惯性导航仪。其测量精度高、抗干扰能力强、数据更新速度快,可以用于车辆、机器人等动态场景下的导航和定位。

pcl::DinastGrabber主要由以下三个组件构成:

1. 数据解析模块:从DINAST文件中解析点云数据,解析后的数据格式为pcl::PointCloud。

2. 回放控制模块:控制点云数据的读取速度,可以设置每秒读取点云的数量(即点云数据的帧率)。

3. 点云转换模块:将点云数据转换为PCL中标准的点云数据格式,以便能够使用PCL中的其他点云处理工具对其进行处理。

pcl::EnsensoGrabber

用于从 Ensenso 相机读取点云数据的类。Ensenso 相机是一种基于结构光原理的双目立体视觉相机,可以用于三维重建、目标检测、位姿估计等领域。该类可以让用户轻松地与 Ensenso 相机交互,并获取相机捕获的点云数据。

Ensenso 相机是一种基于结构光原理的双目立体视觉相机。相机通过发射结构光纹理,然后根据纹理在双目图像中的匹配情况计算物体的三维坐标。Ensenso 相机支持多种不同的分辨率和采样率设置,以满足不同应用场景的需求。

pcl::EnsensoGrabber 的原理是通过 Ensenso 相机提供的 SDK,获取相机采集到的点云数据,并将其存储在 PCL 的数据结构中。在使用 pcl::EnsensoGrabber 时,用户需要提供 Ensenso 相机的参数,包括相机的标定参数、相机的分辨率和采样率等。

pcl::FileGrabber

用于读取离线点云数据的抽象基类,用于从文件系统中读取点云数据并将其转换为 PCL 点云数据类型。它的定义位于 pcl/io/grabbers/file_grabber.h 头文件中。

pcl::FileGrabber 是一个模板类,可以通过指定点云数据类型(例如 pcl::PointXYZ 或 pcl::PointXYZRGB 等)作为模板参数来创建特定类型的文件抓取器。它通过实现 pcl::Grabber 接口,使得文件抓取器可以与其他 PCL 模块(例如滤波器、配准器等)无缝集成。

该类的主要方法是 start() 和 stop(),用于启动和停止点云数据的抓取。在启动后,pcl::FileGrabber 会按照指定的文件名或目录中的文件列表依次读取点云数据,并通过 signals::connection 对象的信号机制将点云数据传递给调用者。

pcl::FileReader&pcl::FileWriter

pcl::FileReader是PCL库中负责从文件中读取点云数据的类,它是一个抽象类,定义了从文件读取点云数据的接口和基本实现,具体读取的实现则由其派生类完成。pcl::FileReader类的定义位于头文件中。

pcl::FileWriter 是 PCL 库中的一个类,用于将点云数据写入到磁盘文件中。它属于 PCL 库中的 I/O 模块,主要负责点云文件的读取和写入,支持的文件格式包括 PCD、PLY、OBJ 等。pcl::FileWriter 的实现方法是使用 C++ 的标准文件流库(fstream)来读写文件。该类提供了多个接口函数,可以将点云数据写入到磁盘文件中,并可以指定写入的数据格式和压缩方式。其中,数据格式包括 ASCII 和二进制格式,压缩方式包括无压缩和 gzip 压缩。

pcl::Grabber

用于从不同的数据源(如Kinect、RealSense等)中获取数据。是PCL库中数据获取的核心类之一。该类可以从不同的数据源中获取数据,例如本地文件、相机设备、网络等。pcl::Grabber的实现基于boost::signal和boost::function,使得数据获取与数据处理分离,可以方便地在不同的应用程序中进行扩展。

pcl::HDLGrabber

用于获取 Velodyne HDL 系列激光雷达数据的类。该类支持实时获取激光雷达数据,以及获取以 pcap 文件格式保存的数据文件。该类提供了一个回调函数接口,可以在每次接收到新数据时调用用户自定义的回调函数,以便进行数据处理和分析。

pcl::HDLGrabber 基于 Boost.Asio 库实现了 Velodyne HDL 系列激光雷达的数据采集。Boost.Asio 是一个 C++ 网络库,可以跨平台地实现异步网络通信,可以实现 TCP、UDP、Serial 等协议的数据传输。pcl::HDLGrabber 类中,通过调用 Boost.Asio 库实现接收激光雷达的 UDP 数据包。在数据接收过程中,通过解析每个 UDP 包的角度、距离和强度信息,将数据组织为点云数据并发送给回调函数进行处理。

pcl::IFSReader&pcl::IFSWriter

pcl::IFSReader是PCL库中用于读取IFS格式(面索引存储)的文件的类。IFS文件格式是一种简单的三角面片文件格式,文件内容由一系列的三角形面片组成,每个面片的描述是由三个点的坐标和一个法向量组成。IFS文件格式只描述面片信息,不包含点的信息。

pcl::IFSWriter 是 PCL 库中用于将点云数据保存为 IFS 格式文件的类。IFS 格式是一种基于面的格式,用于表示 3D 几何体,其中每个面由一个或多个顶点组成。IFS 格式文件包含了几何体的拓扑信息和点的位置信息。IFS 格式也支持颜色信息、法向量信息和纹理信息。实现了 PCL 库中的 pcl::PCLBase 接口类,可以将点云数据保存到 IFS 格式文件中。它可以将点云中的每个点作为面的一个顶点,也可以使用 Delaunay 三角化方法生成面。IFSWriter 还支持将每个面的颜色、法向量和纹理映射信息写入到文件中。

pcl::io::Image

用于读写 2D 图像数据的类。它提供了一些函数用于读取和保存图片,支持多种图片格式,包括 BMP、PNG、JPEG、TIFF 等。该类主要依赖于第三方库 libpng 和 libjpeg。

pcl::ImageGrabberBase

定义了一组抓取 RGB-D 数据的接口函数,可以用于从各种数据源中获取图像和深度图像数据。它是一个抽象基类,需要派生出具体的实现类才能使用。

pcl::io::ImageRGB24&pcl::io::ImageYUV422

pcl::io::ImageRGB24是一个表示RGB图像的类,它包含了图像的宽度、高度、像素数据以及像素排列方式等信息,同时它也提供了一些方法用于对图像进行操作。ImageRGB24的原理比较简单,它是基于三个数组来表示一个RGB图像。其中,每个数组分别存储了R、G、B三个通道的像素值。每个像素用一个三元组(r,g,b)表示,r、g、b分别是该像素在R、G、B通道上的像素值。

pcl::io::ImageYUV422 用于将 YUV422 格式的图像数据转换为 PCL 中的 pcl::PointCloud 格式。YUV422 是一种数字视频格式,用于在数字系统中存储彩色图像。它使用亮度(Y)和两个色度信号(U、V)来表示颜色信息。其中亮度信号采样频率高,色度信号采样频率低,可以用来压缩数据并减小图像大小。主要原理就是将 YUV422 格式的图像数据解码,提取出 Y、U、V 三个通道的像素值,并将其转换为 PCL 中的 pcl::PointCloud 格式,使其能够在 PCL 中进行处理和分析。

pcl::io::LZFImageReader

用于从 LZF 压缩格式的文件中读取点云数据。在本质上,它是 pcl::io::Image 的子类,它可以从磁盘中的 LZF 压缩格式文件中读取点云数据并将其存储在 pcl::PointCloud中。LZF 是一种无损数据压缩格式,它通过删除数据中的冗余信息来压缩数据。主要实现方法是利用了 LZF 压缩算法,该算法是一种快速的无损数据压缩算法,基于哈希表和链表结构。它将原始数据划分成大小固定的块,然后对每个块执行压缩算法,最终将压缩后的数据存储在文件中。在读取 LZF 压缩格式文件时,pcl::io::LZFImageReader 将打开指定的文件,并读取文件头以获取点云数据的属性信息,例如点云的大小和数据类型。然后,它将读取压缩的点云数据并将其解压缩,最后将解压后的点云数据存储在 pcl::PointCloud中。

pcl::ONIGrabber

使用 OpenNI 库来从实时设备或 ONI 数据文件中抓取点云数据。OpenNI 是一个跨平台的开源库,它提供了一个统一的接口,用于访问基于深度传感器的设备,例如 Microsoft Kinect 或 Asus Xtion Pro。

OpenNI 可以从设备读取彩色图像、深度图像和 IR 图像,并且可以使用它们来构建点云。ONI 是 OpenNI 原始数据格式,可以存储由深度传感器捕获的原始数据,例如深度图像、彩色图像和点云等。

openni_wrapper::DeviceKinect 是 PCL 库中用于连接并获取 Kinect 传感器数据的类。它是基于 OpenNI 库中的功能进行开发的,主要实现了 Kinect 的图像、深度和点云数据的采集与处理。

openni_wrapper::DevicePrimesense 类主要是通过 OpenNI 库来访问 Primesense 3D 摄像头。Primesense 3D 摄像头是一种基于光学成像原理,可以同时获取深度图和彩色图的摄像头。它利用红外光投影结构光技术,通过发射红外光并捕捉反射回来的光来获取场景中物体的深度信息。具体来说,Primesense 3D 摄像头包含一个发射红外光的光源和一个红外光相机。当红外光投射到场景中的物体上时,会发生反射和折射,一部分红外光会被相机捕捉到。由于物体的不同位置会反射不同的光线,因此可以通过测量物体反射的光线与光源之间的角度和距离,计算出物体的深度信息。

openni_wrapper::DeviceXtionPro类是用于连接ROS系统中的Asus Xtion Pro相机的封装器。该类实现了openni_wrapper::OpenNIDevice类,并提供了访问相机设备的接口。openni_wrapper::DeviceXtionPro类继承了openni_wrapper::OpenNIDevice类,后者提供了基本的OpenNI设备访问接口。在DeviceXtionPro类中,初始化和打开设备的方法实现了与Xtion Pro相机通信的底层细节。该类使用ROS的控制台管理器(console)来设置相机的不同参数,例如分辨率、曝光时间、增益等等。在类的构造函数中,使用ROS的私有命名空间(private namespace)来设置这些参数。在设置完成后,将通过OpenNI接口打开相机设备。

pcl::PCDReader&pcl::PCDWriter

pcl::PCDReader 是 PCL 库中用于读取 .pcd 格式点云数据文件的类。该类的实现基于 PCL 库中的 pcl::io::loadPCDFile 函数。该函数会先读取文件头部信息,根据头部信息中的字段判断点云数据的类型(ASCII 或二进制格式),并读取相应的数据。如果文件中包含 RGB 信息,loadPCDFile 函数还会将 RGB 数据与点云坐标数据一起读取。pcl::PCDWriter将点云数据保存为PCD格式文件,其实现方法是通过将点云数据转换为PCD格式,然后将转换后的数据写入到磁盘上的文件中。在保存点云数据时,可以通过设置一些参数来控制文件的格式和内容,例如压缩类型、点云数据类型、坐标系等。

PCD是PCL中定义的点云文件格式,支持二进制和ASCII两种形式。其中ASCII格式的文件通常以.pcd为扩展名,而二进制格式的文件则以.pcdb为扩展名。

pcl::PLYReader&pcl::PLYWriter

pcl::PLYReader是PCL库中用于读取PLY格式文件的类。PLY格式是一种常用的三维模型文件格式,支持多种数据类型和数据结构,并且可以包含颜色、法线等信息。pcl::PLYReader的原理是通过解析PLY格式文件的头部信息来确定文件的数据结构、属性类型等信息,然后读取文件中的实际数据。根据PLY格式的规定,文件头部包含了文件的元信息,如文件格式、元素数量、元素属性等,而实际的数据存储在文件的数据块中。因此,读取PLY文件的过程可以分为两个步骤:首先读取文件头部信息,然后根据头部信息读取实际数据。

pcl::PLYWriter 是 PCL 库中用于将点云数据写入 PLY 文件格式的类。主要作用就是将 PCL 中的点云数据写入 PLY 文件格式中。pcl::PLYWriter 类继承自 pcl::io::PlyWriter,并重写了其中的一些方法。在使用 pcl::PLYWriter 时,需要指定输出文件的名称和点云数据。

pcl::io::PointCloudImageExtractor

pcl::io::PointCloudImageExtractor 用于从点云数据中提取 RGB 图像和深度图像。在该类中,可以将一个给定的点云投影到一个深度图像和一个 RGB 图像上。在点云到深度图像和 RGB 图像的投影过程中,该类使用了 PCL 库中的 pcl::getMinMax3D 函数计算点云的最小和最大深度值,然后根据像素和深度值之间的关系,计算出每个点在图像上的坐标。同时,该类还使用了 OpenCV 库来创建和处理深度图像和 RGB 图像。

pcl::io::PointCloudImageExtractorWithScaling

pcl::io::PointCloudImageExtractorFromNormalField

pcl::io::PointCloudImageExtractorFromRGBField

pcl::io::PointCloudImageExtractorFromLabelField

pcl::io::PointCloudImageExtractorWithScaling类利用 PCL 库的 PointCloudImageExtractor 类提取点云深度图像,并将其深度值按比例缩放。

pcl::io::PointCloudImageExtractorFromNormalField是 PCL 库中用于从法向量场中提取点云图像的类。该类将法向量场的 XY 平面投影到 XZ 平面上,然后根据法向量计算每个像素的深度值,最后生成点云。该类的实现方法基于从法向量估计的深度图像中提取点云的算法。该类的主要成员函数是 extract(),它将法向量场作为输入,并生成点云图像作为输出。

pcl::io::PointCloudImageExtractorFromRGBField用于从点云数据中提取 RGB 图像数据,在某些场景下,我们需要将点云数据转换为 RGB 图像进行处理,例如在计算机视觉中的深度学习任务中,我们可能需要将点云数据转换为 RGB 图像作为网络的输入,因此,该类可以帮助我们将点云数据转换为 RGB 图像,方便后续处理。

pcl::io::PointCloudImageExtractorFromLabelField 用于从带标签的点云数据中提取二维深度图像的类。该类是基于 pcl::PointCloud 类的一个特化版本,其中包含一个额外的标签字段,标签字段通常用于指示每个点所属的对象或类别。该类允许用户从带有标签字段的点云数据中提取二维深度图像,并将其保存为矩阵或图像格式。可以使用此类从点云数据中提取图像,以在计算机视觉和机器学习应用程序中进行分类和识别。

pcl::RealSense2Grabber

pcl::RealSense2Grabber用于从Intel RealSense深度相机中获取点云数据。Intel RealSense相机是一种RGB-D相机,其利用深度图像和彩色图像数据进行3D视觉应用。由于它提供了高精度的深度信息,因此经常被用于点云获取。

pcl::RealSense2Grabber是PCL中用于从RealSense相机中获取点云数据的类。它使用Intel RealSense SDK 2.0和PCL对相机进行操作和控制,并从相机获取数据。

该抓取器使用了异步数据流和回调函数来获取数据,每当有新的点云数据可用时,就会调用回调函数并传递该点云数据。

pcl::RobotEyeGrabber

pcl::RobotEyeGrabber 是 PCL 库中用于获取机器人视角点云数据的类。其实现方法基于 Roboception 公司的 RobotEye 相机,可以通过 pcl::io::RobotEyeGrabber 类使用。该类提供了从相机实时获取点云数据的接口,支持不同的数据获取模式和设置,包括颜色、深度图和相机内参的获取。

Roboception 公司的 RobotEye 相机是一款基于双目视觉原理的相机,支持高速数据获取和精准的深度图像计算。它广泛应用于机器人、自动化生产线等领域,可以实现高效的三维物体识别和定位等功能。Roboception 公司也提供了相应的 SDK 和 API,方便用户使用和集成。

该类实现了 PCL 库中的 pcl::Grabber 接口,因此可以通过 PCL 中的 pcl::visualization::PCLVisualizer 对象来可视化获取的点云数据。同时,该类还实现了数据过滤和转换等接口,方便用户使用和处理获取的点云数据。

pcl::StereoGrabberBase

pcl::StereoGrabberBase 用于双目相机数据采集的基类,它提供了一组标准的接口,用于从双目相机中采集数据并产生点云。该类中定义了一些虚函数,用于根据实际的相机型号和采集设备进行实现,以支持不同类型的双目相机和采集设备。实现方法取决于具体的设备和相机模型,因此它没有一个固定的实现方法,而是需要在继承它的派生类中进行具体的实现。

在 PCL 库提供了一些具体的双目相机采集器类,它们都是从 pcl::StereoGrabberBase 类中派生出来的。例如:

pcl::OpenNI2Grabber:用于采集基于 OpenNI2 的 RGBD 相机数据。

pcl::RealSense2Grabber:用于采集 Intel Realsense 2 相机数据。

pcl::StereoRGBDGrabber:用于采集支持 RGBD 传感器的双目相机数据。

PCL1.13版本支持的点云格式

格式

读取

写入

点云类实现

.pcd

pcl::io::loadPCDFile

pcl::io::savePCDFile

pcl::PointCloud

.ply

pcl::io::loadPLYFile

pcl::io::savePLYFile

pcl::PointCloud

.obj

pcl::io::loadOBJFile


pcl::PointCloud

.vtk

pcl::io::loadVTKFile

pcl::io::saveVTKFile

pcl::PointCloud

.stl

pcl::io::loadSTLFile

pcl::io::saveSTLFile

pcl::PolygonMesh

.xyz

pcl::io::loadXYZFile

pcl::io::saveXYZFile

pcl::PointCloud

.asc

pcl::io::loadASCFile

pcl::io::saveASCFile

pcl::PointCloud

.pts

pcl::io::loadPTSFile

pcl::io::savePTSFile

pcl::PointCloud

.3ds

pcl::io::load3DSFile



.fbx

pcl::io::loadFBXFile



.gltf / .glb

pcl::io::loadGLTFFile

pcl::io::saveGLTFFile


.json

pcl::io::loadJSONFile

pcl::io::saveJSONFile

pcl::PointCloud

.pcd/.ply

.vtk/.obj


pcl::io::savePolygonFile

pcl::PolygonMesh

PCL1.13版本支持传感器及接口

点云雷达

pcl::io::VelodyneGrabber

pcl::io::HDLGrabber

pcl::io::VLPGrabber

pcl::io::LivoxGrabber

pcl::io::SickLMS1xxGrabber

pcl::io::SickLMS5xxGrabber

pcl::io::SickLDGrabber

pcl::io::SickLDMRSGrabber

pcl::io::SickLMS400Grabber

pcl::io::SickLMS1xx

pcl::io::SickLMS5xx

pcl::io::SickLD

pcl::io::SickLDMRS

pcl::io::SickLMS400

RGB-D相机

pcl::io::OpenNI2Grabber

pcl::io::RealSense2Grabber

pcl::io::K4aGrabber

pcl::io::EnsensoGrabber

pcl::io::Freenect2Grabber

pcl::io::Kinect2Grabber

立体视觉相机

pcl::io::StereoGrabber

pcl::io::StereoDCGrabber

pcl::io::StereoFlyCapture2Grabber

pcl::io::StereoImageGrabber

pcl::io::StereoOpenCVGrabber

这些传感器对应的接口均可以用于从传感器获取点云或深度图像数据,具体使用方法可以参考PCL库的官方文档。

学习PCL库:PCL库中filters模块

学习PCL库:PCL库中surface模块

学习PCL库:PCL库中实现了哪些分割算法?

学习PCL库需要知道哪些知识?

学习PCL库:基于LOD的大规模点云可视化

学习PCL库你应该知道的C++特性

智驾全栈与3D视觉学习星球:主要针对智能驾驶全栈相关技术,3D/2D视觉技术学习分享的知识星球,将持续进行干货技术分享,知识点总结,代码解惑,最新paper分享,解疑答惑等等。星球邀请各个领域有持续分享能力的大佬加入我们,对入门者进行技术指导,对提问者知无不答。同时,星球将联合各知名企业发布自动驾驶,机器视觉等相关招聘信息和内推机会,创造一个在学习和就业上能够相互分享,互帮互助的技术人才聚集群。

以上内容如有错误请留言评论,欢迎指正交流。如有侵权,请联系删除

扫描二维码

                   关注我们

让我们一起分享一起学习吧!期待有想法,乐于分享的小伙伴加入知识星球注入爱分享的新鲜活力。分享的主题包含但不限于三维视觉,点云,高精地图,自动驾驶,以及机器人等相关的领域。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多