在浏览器运行的点云库 (PCL),由 WebAssembly 提供支持。
English | 简体中文
pcl.js 是在浏览器中运行的 点云库(PCL),由 Emscripten 和 WebAssembly 提供支持。
点云库(PCL)是一个用于 2D/3D 图像和点云处理的大型开放项目。PCL 包含许多最先进的算法,包括过滤、特征估计、表面重建、配准、模型拟合和分割。PCL 用自己的数据格式 PCD 存储点云,也支持以其他格式加载和保存数据集。
点云 是空间中的一组数据点。 这些点可以表示 3D 形状或对象。 每个点位置都有其一组笛卡尔坐标 (X, Y, Z)。 点云通常由激光雷达或摄影测量软件生成,它们测量物体外表面上的许多点。
- 💌 提供与 PCL(C++) 相似的 API,简单易用
- 🌍 支持所有现代浏览器和 Node.js 环境
- 💪 使用 TypeScript 编写,具有可预测的静态类型
- 🚀 还有很多很多!
Edge |
Firefox |
Chrome |
Safari |
Opera |
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 install pcl.js
# Yarn
yarn add pcl.js
<!-- 开发环境 -->
<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>
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();
const PCL = require("pcl.js");
async function main() {
// 初始化
await PCL.init();
// ...
}
main();
<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 进行在线开发:
pcl.js 已采用 贡献者公约 作为其行为准则,我们希望项目参与者遵守它,请阅读 全文 以确保你能明白哪些是可以做的,哪些是不可以做的。
请阅读我们的 贡献指南 以了解我们的开发过程。
感谢所有为 pcl.js 做出贡献的人!
这个项目是根据 MIT 条款获得许可的。