我把一个大型 C++ 库移植到了浏览器!

2022-09-10 14:26:32 +08:00
 darkce

Point Cloud Library (PCL) 是一个独立、大型、开源的 2D/3D 图像和点云处理 C++ 库。爆肝半个月,我把 PCL 库编译为 WebAssembly 运行在浏览器中,并提供了易于使用的 JavaScript 接口

GitHub 仓库: https://github.com/luoxuhai/pcl.js 欢迎 star 🌟

现在可以在浏览器里处理点云数据了,点云处理有以下应用场景:无人驾驶、机器人、人机交互、逆向工程与其他工业自动化、测绘、建筑信息模型化。

🎈 一个示例, 去除点云数据中的异常值:

3526 次点击
所在节点    程序员
9 条回复
thinkershare
2022-09-10 14:32:28 +08:00
这个玩意难用的要死, 每次在 Python 中调用它都搞得我非常烦躁, 也非常消耗性能, 你竟然有闲心将它移植到浏览器里面, 不知道点云 100w 以后, 会不会直接卡死浏览器.
darkce
2022-09-10 14:39:09 +08:00
@thinkershare 性能这快还没测试过,要看具体调用的算法,点云数据量大的情况下,有的算法在 c++ 里运行也特别慢😂
thinkershare
2022-09-10 15:09:07 +08:00
@darkce 没有硬件加速,反正是非常难搞. 我用 3090 的机器测试大的自动驾驶场景, 动不动卡死. 我感觉这个库的 python 封装没人维护了. C++学的太烂, 一直没时间和精力去研究怎么使用原生 C++去搞. 不过 PCL 那么多接口, 你手动将每个包装了一层 JavaScript 的代理吗? 感觉 C++和 JS 的接口差异形式实在太大了.
darkce
2022-09-10 15:15:46 +08:00
@thinkershare 目前只绑定了部分接口,多包装几层消除差异🥺
nightwitch
2022-09-10 15:46:33 +08:00
pcl 感觉不好用..不如 open3D 好用。。之前有几个 pybinding 但是都处于难编译年久失修的状态了
jones2000
2022-09-10 17:10:50 +08:00
不能直接移植到 js 上吗, 必要用 WebAssembly 吗?毕竟会 js 的人比较多。
thinkershare
2022-09-10 17:52:29 +08:00
@jones2000 这个玩意移植到 JS 没有任何太大意义, 因为它本身就对内存要求极为严苛, JS 天然就不适合最高密度的计算. 否则就不会诞生 WebSssembly 了, 而且移植到 JS 的工作量将是非常巨大, 不是 1-2 个人短时间能完成的.
darkce
2022-09-10 18:39:56 +08:00
@jones2000 只是需要加载 webassembly 资源,使用起来和直接用 js 库没有区别
ChenYFan
2022-09-12 16:36:58 +08:00
wasm 理论上可以移植所有二进制程序,但是真的会去移植的都是大佬

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/879113

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX