我正在使用计算机视觉网络应用程序。为此,我在the docs中提供的Wasm模块中使用了OpenCV库。 在大多数情况下,这在我的笔记本电脑/台式机上都非常有效。但是,当在我的Android手机上使用它(三星Galaxy Note III上的Firefox for Android v。68)时,最终每次重新加载时都会引发“内存不足”错误。
我曾尝试在卸载前删除Wasm模块对象以清空内存,但没有任何运气。
这是我所做的基本示例,直接来自opencv.js文档:
<script type="text/javascript">
let imgElement = document.getElementById('imageSrc');
let inputElement = document.getElementById('fileInput');
inputElement.addEventListener('change', (e) => {
imgElement.src = URL.createObjectURL(e.target.files[0]);
}, false);
imgElement.onload = function() {
let mat = cv.imread(imgElement);
cv.imshow('canvasOutput', mat);
mat.delete();
};
function onOpenCvReady() {
document.getElementById('status').innerHTML = 'OpenCV.js is ready.';
}
</script>
<script async src="opencv.js" onload="onOpenCvReady();" type="text/javascript"></script>
我不会在此处复制/粘贴opencv.js,但如果需要,您会发现它here。
另一方面,这是我处理标签页关闭/重新加载的方法:
window.onbeforeunload = function() {
delete cv.wasmMemory;
delete cv.wasmTable;
delete cv;
}
我总是会收到此错误:
uncaught exception: out of memory
为避免这种情况,我必须关闭选项卡,退出浏览器,然后再次将其全部打开。如果有一种方法可以手动清空内存以避免这种现象,那就太好了。 :)