You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AR图像跟踪:使用Carnaux的Node.js应用无法创建NFT特征与图像集

错误根因

你遇到的两个错误属于两类完全独立的内存限制问题:

  1. WebAssembly内存增长失败错误是因为NFT Marker Creator底层调用的特征提取Wasm模块,默认设置的最大堆内存上限为512MB,当处理大尺寸图像时需要申请1GB连续内存,超出了Wasm实例的默认内存限制,该限制不受Node.js的--max-old-space-size参数控制。
  2. 调整--max-old-space-size=4096时触发的JS堆溢出错误,是因为你当前使用的是32位版本的Node.js,32位架构下V8引擎的单进程最大内存上限仅为3.2GB左右,无法分配4GB的老年代内存空间。
可行解决方案
  • 首先替换为64位版本的Node.js运行工具,只要系统可用内存足够,可将--max-old-space-size参数调整为8192(即8GB),规避V8堆内存限制。
  • 手动修改工具源码中Wasm实例的初始化配置,添加最大内存参数:将Wasm初始化配置中的maximumMemory设置为65536(单位为64KB,对应4GB内存),给Wasm模块预留足够的堆内存空间。
  • 提前压缩待处理的原始图像:将图像分辨率压缩到1024*1024像素以内,DPI调整为72,大幅降低特征提取阶段的内存消耗,不需要修改任何配置即可正常生成Marker。
  • 优先使用工具的网页端版本生成Marker:Chrome、Edge等主流浏览器对Wasm内存的默认上限更高,不需要调整任何参数即可直接处理大尺寸图像,规避本地Node.js的内存限制问题。
替代工具方案
  • 可使用AR.js官方维护的命令行NFT Marker生成工具,该工具对内存占用做了针对性优化,不需要调整内存参数即可处理大尺寸图像,生成的Marker文件和Carnaux工具的输出完全兼容,可直接在AR.js项目中使用。
  • 如果业务场景允许,可改用AR.js的图像标记或条形码标记方案,不需要复杂的NFT特征提取步骤,生成门槛更低,运行时的内存消耗也更小。

内容的提问来源于stack exchange,提问作者Tadgh Wagstaff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 05:15:04