问题标签 [opencv4nodejs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - 为什么 OpenCV Mat 会造成内存泄漏?
不确定这是否相关,但我正在opencv4nodejs
用于我的项目,并且我确实在这种情况下运行,如果我不调用.release()
每个 Mat 对象,内存消耗会增加 ~10MB/s。
这个简单的示例代码将解决这个问题。
其中,这个解决了问题:
如果我搜索 OpenCV Mat 对象导致泄漏的原因,我会得到答案,人们说 Mat 能够自行处理内存使用。
如果最后一句话是真的,我做错了什么?如果我没有做错任何事,为什么我必须明确告诉 Mat 对象释放它的内存?或者,npm 模块opencv4nodejs
本身是否存在潜在问题?
node.js - 如何在 OpenCV 相机中禁用缓冲区?
我有这种情况,我使用 OpenCV 来检测镜头前的人脸并在这些人脸上进行一些 ML。我遇到的问题是,一旦我完成了所有处理,然后去抓取下一帧,我就会得到过去,而不是现在。意思是,我将读取缓冲区内的内容,而不是实际在相机前面的内容。因为在处理过程中我不在乎哪些面孔出现在镜头前,所以我关心现在在镜头前的是什么。
我确实尝试将缓冲区大小设置为1
,这确实有很大帮助,但我仍然会获得至少 3 次缓冲区读取。将 FPS 设置为 1,也无助于 100% 消除这种情况。贝娄是我的流程。
我的问题是:
是否可以一起删除缓冲区?如果是这样,如何。如果没有,why
将不胜感激。
javascript - opencv - 从图像中检测线(检测网格)
我想从图像中提取网格,以便能够测量从同一相机拍摄的其他照片上的“事物”。每个方格之间的距离为 1 米。我可以检测线(不完美)我需要帮助以获得更清晰的线,并且还需要以像素为单位获取交点坐标,作为数组。
这里是处理后的图像https://ibb.co/Hn6WYz5 和结果的屏幕截图 https://ibb.co/bgpmDpm
这是我的代码
node.js - 从视频中提取单个帧作为缓冲区
我正在尝试使用 node.js 中的 tensorflow 处理视频(即在服务器上 - 我没有网页)。我需要单独处理视频中的每一帧。我看到有些人正在使用 ffmpeg 从视频中生成单个图像文件,但这似乎很浪费,因为它会在文件系统上创建文件。我更愿意在内存中将每一帧作为 base64 字符串抓取。我已经使用 OpenCV4Node 完成了这项工作,但我想知道是否有更轻量级的解决方案。有人已经这样做了吗?任何帮助,将不胜感激 :-)
javascript - 如何使用 opencv4nodejs 设置矩阵区域
问题:
在opencv4nodejs中设置矩阵区域的最快方法是什么?
问题:
我将源图像覆盖到更大的目标图像中,其尺寸仅为数千。
在 Python 中,我将获取/设置匹配大小的区域:
但我不确定如何在 Javascript 中执行此操作。
我尝试了一些方法,但即使是最快的方法也非常慢。
例如,我有:
- source_mat 列:2929,行:2049
- dest_mat 列:3000,行:6000
- offset_x:150, offset_y:150
将矩阵转换为数组,循环行和列,设置 dest 像素大约需要 12 秒
将两者都转换为数组,循环遍历行,拼接 cols 需要 82 秒:
替换区域根本不起作用,抛出一个生命周期错误,没有额外的日志记录:
使用setAt()
andatRaw()
是迄今为止最快的 8 秒:
我查看了文档,很惊讶地发现这不是一个常见的用例。节点/电子环境是否会减慢原本快速的操作?
opencv - 使用 opencv4nodejs 将画布 ImageData(Uint8ClampedArray)转换为 openCV 矩阵(BRG 或灰色)
我想使用 opencv4nodejs npm 包将画布 ImageData(Uint8ClampedArray 类型)转换为图像矩阵。
https://www.npmjs.com/package/opencv4nodejs
https://github.com/justadudewhohacks/opencv4nodejs#readme
github README 清楚地解释了如何将图像矩阵转换为画布 ImageData,但它没有显示相反使用什么方法。
我想知道如何将灰度画布 ImageData 转换为 matGRAY。(或将 rgba ImageData 转换为 BGR 矩阵)。任何一种策略都会对我很有帮助!我还没有找到其他文档。
目标:
reactjs - 将 opencv4nodejs 导入 React App.js 会引发 TypeError
我正在尝试在我的 React 应用程序中使用 opencv4nodejs 模块。
具有 12 个 CPU 的 Ubuntu 18.04.3 LTS
当我安装在我的应用程序目录中时,我有一个看似成功的自动构建
npm install --save opencv4nodejs
opencv 模块确实已添加到我的 node_modules 文件夹中,并且“opencv4nodejs”已正确添加到我的 package.json 文件中,作为我的 React 应用程序中的依赖项(使用 create-react-app@3.0.1 创建)
但是,如果我尝试将模块导入我的 App.js 文件,则会引发 TypeError。
import cv from "opencv4nodejs";
整个错误输出附加TypeErrorOpenCV.txt
自动构建文件的完整终端输出为 opencvAutoBuildTerminalOutput.txt和 更多AutoBuildOpenCVtermoutput.txt
这是 Autobuild 完成期间结束的 WARN 行。
我尝试通过将这些添加到 package.json 中的依赖项来自己安装对等依赖项,但是这给 eslint 带来了问题,因为实际上安装了一个 eslint,但不知何故未被识别。缺少对等依赖项是否会导致我的错误?
以下是 AutoBuild 输出中包含字符串“Fail”的行。
这是包含“未找到”的 Autobuild 行
这是来自 AutoBuild 的一般信息
opencv - 使用 Open CV 识别深色矩形 - Node.js
我正在尝试使用 Open CV 进行一些图像识别。我想在一款名为《暗黑破坏神 2》的游戏中检测黑色矩形的位置。
在检测到矩形的位置后,我将使用 OCR 提取该矩形的文本。
我已经使用 Photoshop 准备了一些示例,说明这些矩形的位置。在左边你可以看到游戏截图,在右边我用红色矩形指出了黑色矩形,这就是我想用 OpenCV 检测的地方。
我应该使用哪种 OpenCV 方法来检测那些深色矩形?
我不确定 Open CV 是否能够进行这种模式识别,如果有人能指出如何做到这一点,那就太好了。
node.js - 错误:opencv4nodejs linux 缺少模块
我正在尝试在我的项目中使用 opencv4nodejs。
- 在 Windows 中,这工作正常
在 Linux 中,我收到以下错误,
找不到 ../node_modules/opencv4nodejs/build/Release/opencv4nodejs
我确实尝试手动安装模块 opencv4nodejs,在添加包时收到消息。我正在按照以下方式运行它
node.js - 如何在 opencv4nodejs 中将 JSON 描述符转换为 cv.Mat 格式?
我正在尝试使用存储在匹配功能函数内的 JSON 文件中的数据,使用 opencv4nodejs。存储的数据是来自先前计算的图像的描述符。当数据被计算然后在代码中使用时一切正常,但从 JSON 文件中获取时却不行。数据类型为cv.Mat
,然后使用方法存储在 JSON 文件中fs.writeFileSync()
。问题是下一个使用这些描述符的函数需要一个 type 的变量cv.Mat
,而 JSON 数据不被认为是这样的。如何使用存储在 JSON 文件中的这些数据?
这个过程在 c++ 中完美地工作,使用cv::FileStorage
方法。JSON 文件如下所示:
JSON 文件显示存储的数据,可用于存储cv::Mat
带有运算符的变量>>
。
我无法使用 opencv4nodejs 5.5.0 版在 node.js 中重现此过程。JSON.stringify()
我使用变量上的方法保存了JSON文件cv.Mat
,然后fs.writeFileSync()
从包中保存了方法来存储描述符(不幸的是,在opencv4nodejs中fs
似乎没有等价物)。cv::FileStorage
首先,我无法在创建的 JSON 文件中看到任何数据:
我尝试sizes
通过方法访问元素first.sizes
,但它只返回数组的大小,而不是里面的数据。我徒劳地搜索了一种访问 JSON 文件中不可见数据的方法。对此有所了解会很棒。更重要的是,我不能在下一个函数中使用这些描述符,因为它需要一个cv.Mat
类型。
我探索了两种解决方案,到目前为止没有成功:
- 格式化 JSON 文件。我试图创建一个 JSON 数组,但它没有效果:
我还尝试添加一个名为的密钥mat
(我知道这是一个愚蠢的密钥,不知道如何格式化我的 JSON 文件,因为我在网上找不到任何文档):
- 将 JSON 数据转换为
cv.Mat
. 我首先使用 读取文件fs.readFileSync()
,然后使用方法解析文件JSON.parse()
。当试图用 转换这个变量时new cv.Mat()
,它返回一个空矩阵。我还尝试手动填充它:
这一次,它返回一个cv.Mat
变量,显示与刚刚计算的 {keys:values} 完全相同的变量,但给出了错误的结果。它就像里面根本没有存储任何数据一样。
也许我的问题可以更准确:有没有办法表明 JSON 文件是 type cv.Mat
,如果是,如何在 opencv4nodejs 中这样做?我们看到cv::FileStorage
在创建文件时指定了一个类型,"type_id": "opencv-matrix"
. 但我找不到任何有关 opencv4nodejs 的文档或示例。第二个,如何将 JSON 数据转换为cv.Mat
,以一种实际使用假定存储在 JSON 文件中的数据填充几乎创建的变量的方式?问题可能是文件不包含数据,因为我没有发现任何查看它们的可能性。奇怪的是,我什至看不到console.log()
. 在描述符cv.Mat
变量上,它显示:
在解析的 JSON 文件上:
欢迎任何帮助,无论如何感谢您阅读我的问题。