让我们使用Node.js进行OpenCV!〜安装教程〜
最近我在工作中遇到了一个项目,需要用Node.js拍摄摄像头图像,并通过WebRTC进行传输。
然而,出乎意料的是,在 Node.js 上获取相机图像的需求似乎并不常见,所以 OpenCV 是目前唯一一个看起来有完善文档且易于处理的选项。尽管如此,由于在引入过程中遇到一些问题,我决定整理这些备忘录。
获取摄像头图像时的选择 – Node.js
在中文中,选择并不是很多。我将列出印象中被视为代表的两个选项。
-
- OpenCV4Nodejs
- node-webcam
如标题所示,本次将使用OpenCV4Nodejs作为OpenCV包装器。
准备/所需物品
在安装之前,让我们确认一下需要什么!由于本文是2020年11月底的内容,所以当你们使用的时候可能会有些变化,但应该不会有太大的区别!
-
- node-gyp (Node.js標準のものでよいみたい)
-
- Python 2.7
- CMake
此外,在Windows情况下
- windows-build-tools
也将变得必要。
安装选项
Opencv4Nodejs的安装有两个选择。
本文将对第二个同时安装的过程进行解释。
OpenCV本体をインストール後、Opencv4Nodejsを別にインストールする
他のPJとかですでにOpenCVを使ってるから別にインストールしたくない場合はこっち
ただし、とってもめんどくさい上に問題が発生しまくりで成功しませんでした
Opencv4Nodejsにバンドルされているのを一緒にインストール
全自動でOpenCVのビルド等々をやってくれます。素敵
一部インストール(ビルド)時に干渉するパッケージがあります。以下のものは事前にアンインストールしておくことをお勧めします
ffmpeg
tesseract
上記2つのパッケージはOpencv4Nodejsインストール後であれば再インストール可能と思われる
创建一个名为Node的项目。
让我们制作吧。 ba.)
mkdir test
cd test
npm init
如果有package.json,那就万事俱备♪
使用命令进行opencv4nodejs的安装。
在安装之前
有些 Stackoverflow 的文章提到需要修改 package.json 文件,但在安装过程中并不需要这样做。
OpenCV 默认会自动构建并设置为可用,所以请先忽略这些文章~
安装npm
npm install opencv4nodejs@5.2.0
关键在于指定版本。听说从5.4以上的版本开始构建时会出现问题,所以我选择更可靠的5.2版本来使用。
出现了许多警告和说明,感觉有点难理解,但如果能到最后且没有报错的话,大概就没问题了。
你成功了吗?
一定会失败。
失败率非常高。
你可以参考这个附近的内容。
行动确认
只有通过尝试使用,才能确定安装是否成功。
例如,通过创建一个简单的程序,如果能看到很多数字输出,那么Opencv4Nodejs就已经成功安装并且可以获取相机图像。
const cv = require('opencv4nodejs');
const wCap = new cv.VideoCapture(0);
setTimeout(function() {
let frame = wCap.read();
console.log(frame.getDataAsArray());
}, 2000)
如果你想要更多实感,可以参考以下网站!
附言:关于OpenCV的安装,需要另外安装。
上面提到的那位表示:”一直遇到问题,导致没有成功”的人的故事。
失败的原因有两个。
有一个问题是无法成功地引用OpenCV。虽然需要向package.json添加以下部分,但我无法确定如何正确设置,只能得到类似于无法找到core.h的错误,尽管已经指定了brew安装目录!如果有人知道正确答案,请留下评论,我将不胜感激!
{
"name": "sample",
"version": "1.0.0",
"main": "app.js",
...
"opencv4nodejs": {
"disableAutoBuild": 1, <= 別にインストールコースでは1に、一緒にコースの場合は0に設定します
"opencvIncludeDir": "/usr/local/opt/opencv@3/include/opencv",
"opencvLibDir": "/usr/local/opt/opencv@3/lib",
"opencvBinDir": "/usr/local/opt/opencv@3/bin"
}
}
第二个问题是关于”opencv_contrib”的存在。这也是一个麻烦。”Contrib”是指由于专利和其他许可证问题而与OpenCV本体分离出来的功能。据说在opencv3nodejs中使用了一个叫做”SHIFT”的功能,因此需要安装contrib。
然而,由于我是通过Mac的brew命令进行安装的,所以contrib应该也一并安装了,但我无法解决问题,只得放弃了…
结束
安装部分已经完成了。
接下来我会将从OpenCV获取的图像传送到node-webrtc(wrtc)框架中进行发送。
由于在“从node-webrtc中发送图像”这个领域中并没有找到很详细的资料,所以我计划将其作为备忘录发布。
请务必阅读哦~