V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
darkce
V2EX  ›  程序员

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

  •  1
     
  •   darkce · 2022-09-10 14:26:32 +08:00 · 3684 次点击
    这是一个创建于 790 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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