本当は macOS で opencv4nodejs を 使いたいのだが、うまくいかない。 そこで、 Ubuntu 20.04 上で OpenCV 4.5.3 をソースからインストールした状態から opencv4nodejs をインストールして使うことができたので、その作業記録です。
なお、OpenCV を python から使うのであれば、普通に apt で入れたそれを使えばよい。(Ubuntuでの話)
$ sudo apt install python3-opencv
そして、hello.py などに
import cv2 as cv
print(cv.__version__)
これを python3 hello.py して作動確認する。
これと同じノリで Node.js から OpenCVを使うには、 opencv4nodejs がある。 ただ、macOS( catalina )でやってみた限り、うまく作動させられなかった。 Ubuntu 20.04 でも apt で入れた OpenCV に対してはうまくいかなかったのですが、 OpenCV をソースからインストールしたあと、それを使う形で opencv4nodejs を npm install したらうまくいきました。
手順1: cmake を入れる.
$ sudo apt install cmake
もちろん、環境によってはさらに、もろもろ入れる必要かもしれません。
手順2: opencv-4.5.3.tar.gz を github から入手.
$ tar xf opencv-4.5.3.tar.gz
$ cd opencv-4.5.3
$ mkdir build
$ cd build
$ cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
$ make
結構時間かかります。待ちます。高性能なCPUならば -j8 などのオプションをつけると速いらしいです。
$ sudo make install
これで完了です。
ちなみに、不要になった場合に削除したいときは、sudo make uninstall できます。なので、このインストール作業に使用したディレクトリはキープしておいたほうがよい。
いよいよ opencv4nodejs です。
手順1: プロジェクトの作成.
$ mkdir facedetection
$ cd facedetection
$ npm init -y
手順2: opencv4nodejs のインストール.
npm opencv4nodejs でインストールする前に、 先に入れておいた OpenCV を使う指定をします。
$ export OPENCV4NODEJS_DISABLE_AUTOBUILD=1; npm install opencv4nodejs --save
あとは、待つだけでインストールが完了します。 途中なんやかんやビルドされるので結構時間かかります。
うまく使えるか確認しましょう。 main.js を作成します。
const cv = require('opencv4nodejs');
const image = cv.imread('Lena.png');
const classifier = new cv.CascadeClassifier(cv.HAAR_FRONTALFACE_ALT2);
// detect faces
const { objects, numDetections } = classifier.detectMultiScale(image.bgrToGray());
console.log('faceRects:', objects);
console.log('confidences:', numDetections);
Lena.png がカレントディレクトリに必要なので、さきほどの OpenCV ソースあたりから見つけてコピーしておきます。
$ node main.js
これでコンソールに顔認識結果が出力されます。