Skip to content

Latest commit

 

History

History
220 lines (158 loc) · 8.4 KB

README-zh_CN.md

File metadata and controls

220 lines (158 loc) · 8.4 KB

title=

在浏览器运行的点云库 (PCL),由 WebAssembly 提供支持。

Tests npm version Bundle Size License: MIT Downloads jsDelivr Rate this package DeepScan

English | 简体中文

简介

pcl.js 是在浏览器中运行的 点云库(PCL),由 EmscriptenWebAssembly 提供支持。

点云库(PCL)是一个用于 2D/3D 图像和点云处理的大型开放项目。PCL 包含许多最先进的算法,包括过滤、特征估计、表面重建、配准、模型拟合和分割。PCL 用自己的数据格式 PCD 存储点云,也支持以其他格式加载和保存数据集。

点云 是空间中的一组数据点。 这些点可以表示 3D 形状或对象。 每个点位置都有其一组笛卡尔坐标 (X, Y, Z)。 点云通常由激光雷达或摄影测量软件生成,它们测量物体外表面上的许多点。

示例

查看所有示例

特性

  • 💌 提供与 PCL(C++) 相似的 API,简单易用
  • 🌍 支持所有现代浏览器和 Node.js 环境
  • 💪 使用 TypeScript 编写,具有可预测的静态类型
  • 🚀 还有很多很多!

资源

支持的环境

Edge
Edge
Firefox
Firefox
Chrome
Chrome
Safari
Safari
Opera
Opera
Node.js
Node.js
16+ 52+ 57+ 11+ 44+ 14+

资源大小

pcl.js version: latest

资源 链接 大小
pcl.js https://cdn.jsdelivr.net/npm/pcl.js/dist/pcl.js ~36k gzip’d
pcl-core.wasm https://cdn.jsdelivr.net/npm/pcl.js/dist/pcl-core.wasm ~553k gzip’d

安装

NPM

# NPM
npm install pcl.js

# Yarn
yarn add pcl.js

CDN

<!-- 开发环境 -->
<script src="https://cdn.jsdelivr.net/npm/pcl.js/dist/pcl.js"><script>

<!-- 生产环境 -->
<script src="https://cdn.jsdelivr.net/npm/pcl.js/dist/pcl.min.js"><script>

使用

NPM

浏览器

import * as PCL from 'pcl.js';

async function main() {
  // 初始化
  await PCL.init({
    /**
     * 推荐,可选配置,自定义 WebAssembly 文件链接
     * @default js 文件所在目录 + pcl-core.wasm
     */
    url: 'https://cdn.jsdelivr.net/npm/pcl.js/dist/pcl-core.wasm',
  });

  // ...
}

main();

Node.js

const PCL = require("pcl.js");

async function main() {
  // 初始化
  await PCL.init();
  // ...
}

main();

CDN

<script>
async function main() {
  // 初始化,PCL 是全局对象
  await PCL.init();
  // ...
}

main();
</script>

简单示例

// TypeScript

import * as PCL from 'pcl.js';

async function main() {
  await PCL.init({
    url: 'https://cdn.jsdelivr.net/npm/pcl.js/dist/pcl-core.wasm',
  });

  // 获取 PCD 文件
  const data = await fetch('https://cdn.jsdelivr.net/gh/luoxuhai/pcl.js@master/data/rops_tutorial/points.pcd').then(res => res.arrayBuffer());
  // 加载 PCD 数据,返回点云对象
  const cloud = PCL.loadPCDData<PCL.PointXYZ>(data, PCL.PointXYZ);

  // 使用 PassThrough 过滤器过滤点云
  // 参考: https://pcl.readthedocs.io/projects/tutorials/en/master/passthrough.html#passthrough
  const pass = new PCL.PassThrough<PCL.PointXYZ>(PCL.PointXYZ);
  pass.setInputCloud(cloud);
  pass.setFilterFieldName('z');
  pass.setFilterLimits(0.0, 1.0);
  const cloudFiltered = pass.filter();

  // 将过滤后的点云对象保存为 PCD 文件, 内容为 ArrayBuffer
  const cloudFilteredData = PCL.savePCDDataASCII(cloudFiltered);
}

main();

变更日志

更改日志 会定期更新,以反映每个新版本中的更改内容。

路线图

查看完整的 路线图

在线开发

你可以使用 Gitpod 进行在线开发:

Open in Gitpod

贡献

pcl.js 已采用 贡献者公约 作为其行为准则,我们希望项目参与者遵守它,请阅读 全文 以确保你能明白哪些是可以做的,哪些是不可以做的。

请阅读我们的 贡献指南 以了解我们的开发过程。

感谢所有为 pcl.js 做出贡献的人!

贡献者

协议

这个项目是根据 MIT 条款获得许可的。

Star History Chart