WindowsのNode.jsでOpenCV node-opencv編

Date
December 25, 2013
Tags
Node OpenCV

OpenCVとゎ

Intelがだしてる画像処理のライブラリで、顔認識ができたりで有名です

Node.jsでOpenCVが使ぇる、node-opencv

node-opencvゎその名のとーり、
Node.jsでOpenCVをかんたんに扱ぇるょーにしてくれるライブラリです

けど元々作者の人が、Windowsでの利用をほぼ想定してなぃっぽくて、
Windows環境での導入の情報をみっけるのがたぃへんです

forkブランチのnotcoffeetable/node-opencv
Windowsでの使用例がコミットされてるのをみっけ、
参考にしてがんばってみました

WindowsのNode.jsにnode-opencvを入れる方法

ぁゃぴの環境ゎWindows8 64bitで、Node v0.10.21です

Pythonのインストール

Python2.7.6
環境変数PathC:\Python27を追加して、
環境変数PYTHONPATHC:\Python27\Lib\site-packagesを指定

GTK+のインストール

GTK+ all-in-one bundle 3.6.4
pkg-configがとにかく必須なんですけど、
ほかゎ要るのかぁゃぴゎょくゎかんなぃけど一応all-in-one入れました
詳しぃ人ゎall-in-oneじゃなくてもぃぃかもしれません
インストーラじゃなぃのでzipを任意の場所に解凍するだけです
環境変数PathC:\gtk\bin
環境変数PKG_CONFIG_PATHC:\gtk\lib\pkgconfigを追加
(解凍した場所にょって変ぇてくださぃ↑)

Visual Studio Expressのインストール

Microsoft Visual Studio C++ 2012 for Windows Desktop Express
無料で使ぇるExpress版で充分なんだそーです

OpenCVのインストール

OpenCV for Windows Version 2.4.4をインストールします
自己解凍形式で、どこに解凍するか聞かれるので、
C:\とかゎかりゃすぃすきなとこを指定します

OpenCVだけの情報をみてると、
ここでCMakeでのビルドに進んだりしますが、
node-opencvでっかぅ分にゎCMakeゎ必要なぃみたぃです

環境変数PathC:\opencv\build\x64\vc11を追加します
このパスゎ、64bit環境ならx64\vc11、32bit環境ならx86\vc11です

opencv.pcファイルの編集と配置

pkg-configが使ぅopencv.pcとゅーファイルを作ります
参考:notcoffeetable/node-opencv/opencv_example.pc

# Package Information for pkg-config

prefix=C:/opencv
exec_prefix=${prefix}/bin
libdir=${prefix}/build/x64/vc11/lib
includedir_old=${prefix}/build/include/opencv
includedir_new=${prefix}/build/include

Name: OpenCV
Description: Open Source Computer Vision Library
Version: 2.4.4
Libs: ${libdir}/opencv_core244 ${libdir}/opencv_imgproc244 ${libdir}/opencv_highgui244 ${libdir}/opencv_ml244 ${libdir}/opencv_video244 ${libdir}/opencv_features2d244 ${libdir}/opencv_calib3d244 ${libdir}/opencv_objdetect244 ${libdir}/opencv_contrib244 ${libdir}/opencv_legacy244 ${libdir}/opencv_flann244
Cflags: ${includedir_old} ${includedir_new}

場合にょって編集が必要なのゎprefixのパスとlibdirのパスで、
ほかゎたぶん変ぇなくてぃぃと思ぃます

C:\opencv\opencv.pcとして保存してぉき、
環境変数PKG_CONFIG_PATHC:\opencvを追加します

node-opencvのインストール

まず、普通なら使ぃたぃプロジェクトのディレクトリで
npm install opencvをゃりますけど、
ぁゃぴが試したv0.4.0でゎ
node-opencv\src\Matrix.ccroundがなぃとかで怒られて、
インストールに失敗しました

ソースをぃじらなぃとだめっぽぃと思ったので、
本家node-opencvから一旦とってきました
git clone git@github.com:peterbraden/node-opencv.git

そしてnode-opencv\src\Matrix.cc
めっちゃ最初のほーにroundを強引に追加します
参考:github - peterbraden/node-opencv - issue:83

#include "Contours.h"
#include "Matrix.h"
#include "OpenCV.h"

inline double round(double d){ return floor( d + 0.5); }

ぁゃぴC++の知識なくて、もっとぃぃ方法ぁるかもしれなぃですけど…

で、そしたら、使ぃたぃプロジェクトのディレクトリに行って、
インストールしてみます

cd ../opencv_sample/
npm install ../node-opencv

すると、なんかビルドがはじまって、
ゃたらと黄色ぃ警告がでますが、赤じゃなければへーきみたぃ…
後々っかってぃく㊤で、へーきじゃなくなったらごめんなさぃ↓↓

これでひとまずインストールゎ完了です

使ぃかた

でゎnode-opencv/example/convert_image.jsを、
opencv_sample/のほーに持ってきて、
パスちょっと変ぇて使ってみます

//sample.js (example/convert_image.jsのパクり)
var cv = require('opencv');
cv.readImage("./mona.png", function(err, im) {
  img_hsv = im.copy();
  img_gray = im.copy();

  img_hsv.convertHSVscale();
  img_gray.convertGrayscale();

  im.save("./nor.png");
  img_hsv.save("./hsv.png");
  img_gray.save("./gray.png");

  console.log("Guardado");
});

実行してみると

node sample.js

以下のょーに、画像が生成されました!
けど、convertHSVscale()ってなんなんだろ…
このhsv.pngの色、バグってんのか合ってんのかゎかんなぃです/(^o^)\
グレースケールゎ、ちゃんとできてるっぽぃですね

生成された3枚と元画像1枚

まだょくゎかりませんが、これから使ぃこんでみょーかなと思ってます

追記:その後の感想とか

WindowsのNode.jsでOpenCV opencv-node編