「opencv4nodejs」はNode.js上で画像処理ライブラリ「OpenCV」を利用するためのモジュールです。
Node-REDから「opencv4nodejs」を利用する手順を説明します。今回は「opencv4nodejs」のインストール手順について説明します。
以下は、Windows10 64bit + Node.jsバージョン16系での手順です。
各ソフトのインストーラの準備やバージョンの管理などは大変なので、Windowsのパッケージ マネージャである「Chocolatey」を使うことにします。「Chocolatey」の導入については、こちらをご覧ください。
すでに「Chocolatey」がインストールされていることを前提に説明を続けます。
インストール手順
「opencv4nodejs」はバイナリーでは提供されていません。自PCでOpenCVをビルドすることもできますが、様々なPC環境の不具合でエラーが発生します。
本説明では「Chocolatey」でOpenCVのバイナリーを準備します。
自PCでビルドする方法は、古い説明をご覧ください。
まず、Node.jsのネイティブアドオンモジュール(C++で作成したモジュール)をコンパイルするためツール「node-gyp」をインストールします。
コマンド プロンプトを管理者権限で起動し以下を実行します。
> npm install -g node-gyp
「node-gyp」はPythonを利用します。2023/3において、推奨はPython v3.6、v3.7、v3.8、v3.9のようです。
Python/CMake/Git/Visual Studio Build Tools 2017/OpenCVをインストールします。
> choco install cmake --installargs 'ADD_CMAKE_TO_PATH=System'
> choco install git
> choco install python39
システム環境変数Pathに、「c:\Python39」を追加しておきましょう。
> choco install OpenCV
以下の環境変数を追加します。(デフォルトの設定では「C:\tools」にインストールされます)
- OPENCV_INCLUDE_DIR
- C:\tools\opencv\build\include
- OPENCV_LIB_DIR
- C:\tools\opencv\build\x64\vc15\lib
- OPENCV_BIN_DIR
- C:\tools\opencv\build\x64\vc15\bin
システム環境変数Pathに「%OPENCV_BIN_DIR%」を追加します。
コマンドプロンプトを再起動し、パスが通っていることを確認します。
> python --version
Python 3.9.13
> cmake --version
cmake version 3.25.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
> git --version
git version 2.39.2.windows.1
バージョン番号は私のPC環境での例なので、ちゃんとバージョン番号が表示されればOKです。
Python、Cmake、Gitのパスが通っていな時は、こちらを参考にして追加してください。
自動ビルド スクリプトが実行されないように環境変数を設定した後、 opencv4nodejsのインストールを実行します。
> set OPENCV4NODEJS_DISABLE_AUTOBUILD=1
> npm install -g opencv4nodejs
changed 30 packages, and audited 31 packages in 8m
found 0 vulnerabilities
正常にインストールされた場合
スタートメニュー -> Node.js -> Node.js を実行してください。
以下のように、const cv = require("opencv4nodejs")
を実行した後、cv
を実行してください。
> const cv = require("opencv4nodejs")
undefined
> cv
{
isCustomMatAllocatorEnabled: [Function: isCustomMatAllocatorEnabled],
dangerousEnableCustomMatAllocator: [Function: dangerousEnableCustomMatAllocator],
dangerousDisableCustomMatAllocator: [Function: dangerousDisableCustomMatAllocator],
getMemMetrics: [Function: getMemMetrics],
version: { major: 3, minor: 4, revision: 6 },
modules: {
core: true,
calib3d: true,
dnn: true,
face: true,
features2d: true,
imgproc: true,
正常にインストールされなかった場合
その1
> const cv = require("opencv4nodejs")
Uncaught Error: The specified module could not be found.
\\?\C:\Users\[YOUR ACCOUNT]\AppData\Roaming\npm\node_modules\opencv4nodejs\build\Release\opencv4nodejs.node
at Object.Module._extensions..node (internal/modules/cjs/loader.js:1131:18)
at Module.load (internal/modules/cjs/loader.js:937:32)
at Function.Module._load (internal/modules/cjs/loader.js:778:12)
at Module.require (internal/modules/cjs/loader.js:961:19)
at require (internal/modules/cjs/helpers.js:92:18)
上の場合、必要なdllが読み込めなかったようです。
C:\Users\[YOUR ACCOUNT]\AppData\Roaming\npm\node_modules\opencv4nodejs\node_modules\opencv-build\opencv\build\bin\Release
のPathを通すことで問題は解決されました。
その2
> const cv = require("opencv4nodejs")
Uncaught Error: Cannot find module 'opencv4nodejs'
Require stack:
- <repl>
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:889:15)
at Function.Module._load (internal/modules/cjs/loader.js:745:27)
at Module.require (internal/modules/cjs/loader.js:961:19)
at require (internal/modules/cjs/helpers.js:92:18) {
code: 'MODULE_NOT_FOUND',
requireStack: [ '<repl>' ]
}
この場合、環境変数NODE_PATH
をC:\Users\[YOUR ACCOUNT]\AppData\Roaming\npm\node_modules
で作成し、環境変数Pathに%NODE_PATH%
を追加してください。
これは、Node.jsのインストール時の忘れでした。
最後に
こちらの「How to install」も参考にしてください。
Node-REDで画像処理(opencv4nodejs) その2で、Node-REDからの利用手順を説明します。